使用VB.NET应用程序将HTML表从剪贴板粘贴到Excel工作表中

乔纳森

我有DataTable7000行和60列,我需要将其保存在Excel文件中。

循环DataTable花费大量时间,ClosedXml库引发了一个我无法解决的异常(持续了好几周)。因此,我决定从创建一个HTML表DataTable,将其添加到剪贴板并将其粘贴到网络上的通用Excel文件中。

问题在于所有字符串都是用希伯来语编写的,并且当应用程序粘贴数据时,所有字符串均未正确编码,而Excel会将其显示为问号。

注意:当我使用鼠标将应用程序设置的数据粘贴到剪贴板上时,数据将按其应有的方式粘贴,没有问号。我也尝试使用该PasteSpecial()方法的所有Enum参数都没有成功。请参阅我添加的相关代码部分。

 Public Function LoadDataTableToDivisinReport(ByVal d As DataTable, ByVal pathAndFileNameToSave As String, ByVal DbsheetNameToReplaceData As String, Optional ByVal pathToSaveImages As String = "") As Boolean
........

                Dim t As Threading.Thread
                t = New System.Threading.Thread(AddressOf createHtmlTableToClipBoard)
                t.SetApartmentState(Threading.ApartmentState.STA)
                t.Start()
                ws.Range("a1").PasteSpecial(Excel.XlPasteType.xlPasteFormats)

.........
End Function


    Private Sub createHtmlTableToClipBoard()

        Dim b As New StringBuilder
        b.Append("<table>")
        b.Append("<tr>")
        For i = 0 To dd.Columns.Count - 1
            b.Append("<th>" & dd.Columns(i).ColumnName & "</th>")

        Next
        b.Append("</tr>")



        For j = 0 To dd.Rows.Count - 1
            b.Append("<tr>")
            For i = 0 To dd.Columns.Count - 1
                b.Append("<td>")
                b.Append(dd.Rows(j).Item(i).ToString)
                b.Append("</td>")
            Next
            b.Append("</tr>")
        Next

        b.Append("</table>")

        Clipboard.SetText(b.ToString())

    End Sub

    Private dd As DataTable

更新:感谢@ClearLogic评论,此问题已解决,通用工作簿中的宏是导致此问题的原因。请参阅下面@ClearLogic标记为答案的讨论。

清除逻辑

我会推荐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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Excel VBA中复制筛选数据范围并将其粘贴到新工作表中(不使用剪贴板)

来自分类Dev

如何使用按钮将剪贴板中的文本粘贴到选定的文本框中

来自分类Dev

如何仅使用键盘将Windows剪贴板粘贴到PuTTY会话中?

来自分类Dev

如何让用户使用纯Javascript将剪贴板中的图像数据粘贴到Firefox中的canvas元素中?

来自分类Dev

使用Shift + Insert从剪贴板粘贴到gnome终端?

来自分类Dev

使用 VB.Net 应用程序将 Excel 数据导入 SQL Server 表

来自分类Dev

使用Shift + Insert从剪贴板粘贴到gnome终端中?

来自分类Dev

使用VBA将动态范围复制并粘贴到Excel中的新工作表

来自分类Dev

将图像从键盘扩展名保存到剪贴板,以使用户可以在Swift中将其粘贴到文本字段中

来自分类Dev

VB.Net生成HTML表格到剪贴板

来自分类Dev

在应用程序外部使用Qt的剪贴板快捷方式/热键绑定

来自分类Dev

如何使用python将现有工作表复制并粘贴到现有工作簿中?

来自分类Dev

使用JavaScript onclick从剪贴板粘贴到文本区域

来自分类Dev

如何将数据复制并粘贴到使用for循环在VBA中创建的工作表中?

来自分类Dev

如何将(大)vim文件的内容复制到OSX系统剪贴板中以粘贴到其他应用程序中?

来自分类Dev

使用vb.net将工作表中的数据导出到多个工作表

来自分类Dev

使用 VBA 将所选列复制并粘贴到 Excel 中的表尾

来自分类Dev

如何使用Confluence 5.7将数据粘贴到表中?

来自分类Dev

如何使用Confluence 5.7将数据粘贴到表中?

来自分类Dev

将大量数据粘贴到R中的剪贴板

来自分类Dev

将剪贴板中的数据粘贴到其他工作簿

来自分类Dev

VB.NET:将string1 valeur从资源复制到剪贴板

来自分类Dev

如何使用VNC在Windows剪贴板和OpenSuse剪贴板之间复制/粘贴数据?

来自分类Dev

在MySQL命令行中,如何仅使用键盘从剪贴板粘贴?

来自分类Dev

在不使用选择/激活的情况下,将工作表名称复制并粘贴到另一个不活动的工作表中

来自分类Dev

在不使用选择/激活的情况下,将工作表名称复制并粘贴到另一个不活动的工作表中

来自分类Dev

使用剪贴板和AbstractAction复制和粘贴JTable

来自分类Dev

如何使用jQuery Mobile从剪贴板粘贴文本?

来自分类Dev

TypeScript 如何使用按钮从剪贴板粘贴数据?

Related 相关文章

  1. 1

    如何在Excel VBA中复制筛选数据范围并将其粘贴到新工作表中(不使用剪贴板)

  2. 2

    如何使用按钮将剪贴板中的文本粘贴到选定的文本框中

  3. 3

    如何仅使用键盘将Windows剪贴板粘贴到PuTTY会话中?

  4. 4

    如何让用户使用纯Javascript将剪贴板中的图像数据粘贴到Firefox中的canvas元素中?

  5. 5

    使用Shift + Insert从剪贴板粘贴到gnome终端?

  6. 6

    使用 VB.Net 应用程序将 Excel 数据导入 SQL Server 表

  7. 7

    使用Shift + Insert从剪贴板粘贴到gnome终端中?

  8. 8

    使用VBA将动态范围复制并粘贴到Excel中的新工作表

  9. 9

    将图像从键盘扩展名保存到剪贴板,以使用户可以在Swift中将其粘贴到文本字段中

  10. 10

    VB.Net生成HTML表格到剪贴板

  11. 11

    在应用程序外部使用Qt的剪贴板快捷方式/热键绑定

  12. 12

    如何使用python将现有工作表复制并粘贴到现有工作簿中?

  13. 13

    使用JavaScript onclick从剪贴板粘贴到文本区域

  14. 14

    如何将数据复制并粘贴到使用for循环在VBA中创建的工作表中?

  15. 15

    如何将(大)vim文件的内容复制到OSX系统剪贴板中以粘贴到其他应用程序中?

  16. 16

    使用vb.net将工作表中的数据导出到多个工作表

  17. 17

    使用 VBA 将所选列复制并粘贴到 Excel 中的表尾

  18. 18

    如何使用Confluence 5.7将数据粘贴到表中?

  19. 19

    如何使用Confluence 5.7将数据粘贴到表中?

  20. 20

    将大量数据粘贴到R中的剪贴板

  21. 21

    将剪贴板中的数据粘贴到其他工作簿

  22. 22

    VB.NET:将string1 valeur从资源复制到剪贴板

  23. 23

    如何使用VNC在Windows剪贴板和OpenSuse剪贴板之间复制/粘贴数据?

  24. 24

    在MySQL命令行中,如何仅使用键盘从剪贴板粘贴?

  25. 25

    在不使用选择/激活的情况下,将工作表名称复制并粘贴到另一个不活动的工作表中

  26. 26

    在不使用选择/激活的情况下,将工作表名称复制并粘贴到另一个不活动的工作表中

  27. 27

    使用剪贴板和AbstractAction复制和粘贴JTable

  28. 28

    如何使用jQuery Mobile从剪贴板粘贴文本?

  29. 29

    TypeScript 如何使用按钮从剪贴板粘贴数据?

热门标签

归档