如何在.NET Interactive(Polyglot)Notebooks中复制数据到剪贴板?
在.NET Interactive Notebook中导出完整数据的实现方法
方法1:生成可下载的CSV链接
通过将数据序列化为CSV格式,结合HTML链接实现一键下载,支持浮点列表或元组列表:
F# 示例代码
open System open System.Text open Microsoft.DotNet.Interactive // 示例元组列表数据 let data = [ for i in 1..100 -> (float i, float (i * 2)) ] // 转换为CSV字符串 let toCsv (data: ('a * 'b) list) = let sb = StringBuilder() sb.AppendLine("列1,列2") |> ignore for (x, y) in data do sb.AppendLine($"{x},{y}") |> ignore sb.ToString() let csvContent = toCsv data let base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(csvContent)) let downloadLink = $"<a href='data:text/csv;base64,{base64}' download='full_data.csv'>下载完整数据</a>" // 在笔记本中显示下载链接 Display(downloadLink, "text/html")
C# 示例代码
using System; using System.Collections.Generic; using System.Text; using Microsoft.DotNet.Interactive; // 示例元组列表数据 var data = new List<(double, double)>(); for (int i = 1; i <= 100; i++) { data.Add((i, i * 2)); } // 转换为CSV字符串 string ToCsv(List<(double, double)> data) { var sb = new StringBuilder(); sb.AppendLine("列1,列2"); foreach (var (x, y) in data) { sb.AppendLine($"{x},{y}"); } return sb.ToString(); } var csvContent = ToCsv(data); var base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(csvContent)); var downloadLink = $"<a href='data:text/csv;base64,{base64}' download='full_data.csv'>下载完整数据</a>"; // 在笔记本中显示下载链接 Display(downloadLink, "text/html");
方法2:复制数据到剪贴板
借助System.Windows.Forms.Clipboard实现数据一键复制到剪贴板,适合快速粘贴到Excel等工具:
F# 示例代码
#r "System.Windows.Forms.dll" open System.Windows.Forms open System.Text // 示例浮点列表数据 let data = [ for i in 1..100 -> float i ] // 转换为换行分隔的字符串(方便粘贴为列) let clipContent = String.Join("\n", data) Clipboard.SetText(clipContent) printfn "数据已复制到剪贴板"
C# 示例代码
#r "System.Windows.Forms.dll" using System.Windows.Forms; using System.Text; // 示例浮点列表数据 var data = new List<double>(); for (int i = 1; i <= 100; i++) { data.Add(i); } var clipContent = string.Join("\n", data); Clipboard.SetText(clipContent); Console.WriteLine("数据已复制到剪贴板");
方法3:显示完整表格数据
将数据转换为DataTable后显示,突破默认20条的显示限制:
F# 示例代码
open System.Data open Microsoft.DotNet.Interactive let data = [ for i in 1..100 -> (float i, float (i * 3)) ] // 创建DataTable并填充数据 let dt = DataTable() dt.Columns.Add("列1", typeof<double>) dt.Columns.Add("列2", typeof<double>) for (x, y) in data do dt.Rows.Add(x, y) // 显示完整表格 Display(dt)
内容的提问来源于stack exchange,提问作者Eugene
相关产品推荐
相关产品推荐

