我有一个包含7000行和60列的sort -u
,我需要将其保存在Excel文件中。
循环遍历cut -d ' ' -f1-3 File1 | sort -u | grep -h -f - File1 File2 | sort -t ' ' -k 1,2g
花费了很多时间,而ClosedXml图书馆正在提出一个我无法解决的异常(持续数周)。所以我决定从DataTable
创建一个HTML表格,将其添加到剪贴板并将其粘贴到网络上的通用Excel文件中。
问题是所有字符串都是用希伯来语编写的,当应用程序粘贴数据时,所有字符串都不能正确编码,Excel会将它们显示为问号。
注意:当我使用鼠标粘贴应用程序在剪贴板上设置的数据时,数据将按照应有的方式粘贴,而不会出现问号。
此外,我试图使用DataTable
方法的所有Enum参数,但没有成功。
请参阅我添加的相关代码部分。
DataTable
更新 感谢@ClearLogic评论问题已解决,通用工作簿中的宏是导致该行为的原因。请参阅下面的讨论@ClearLogic标记的答案。
答案 0 :(得分:2)
我会推荐 EPPlus 。它可以在nuget上使用。非常容易使用。
这是c#中一个有效的代码段。翻译到vb.net并不困难
using (ExcelPackage excelFile = new ExcelPackage(new FileInfo(fileName)))
{
ExcelWorksheet ws = excelFile.Workbook.Worksheets.Add("Sheet1");
ws.Cells["A1"].LoadFromDataTable(datatable, true);
for (int i = 1; i <= datatable.Columns.Count; i++)
{
ws.Column(i).Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Left;
ws.Column(i).AutoFit();
}
ws.Row(1).Style.Font.Bold = true;
excelFile.Save();
}
修改强> Vb.net代码
Using excelFile As New ExcelPackage(New FileInfo(fileName))
Dim ws As ExcelWorksheet = excelFile.Workbook.Worksheets.Add("Sheet1")
ws.Cells("A1").LoadFromDataTable(datatable, True)
For i As Integer = 1 To datatable.Columns.Count
ws.Column(i).Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Left
ws.Column(i).AutoFit()
Next
ws.Row(1).Style.Font.Bold = True
excelFile.Save()
End Using