使用VB.NET Application将HTML表从剪贴板粘贴到Excel工作表

时间:2016-07-08 17:23:51

标签: .net vb.net excel encoding

我有一个包含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标记的答案。

1 个答案:

答案 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