VB.NET 复制表格问题

我用VB.NET 写的程序 需要复制表格内容到微信聊天窗口发送,之前用Excel库实现的,发现电脑没有安装表格软件无法使用,如何使用EPPLUS或者OPOI库实现同样的功能,是复制表格的内容到剪切板,然后再粘贴到微信聊天窗口。

 ' 打开Excel文件
        Dim excelApp As New Excel.Application()
        Dim workbook As Excel.Workbook = excelApp.Workbooks.Open(OpenFileDialog1.FileName)
        Dim worksheet As Excel.Worksheet = workbook.Sheets(3)
        If 行数2 = 1 Then
            worksheet.Range(复制1).Copy()            ' 选择复制1区域并复制到剪切板
            Threading.Thread.Sleep(500)                       ' 延时500毫秒
            SendKeys.Send("^v")                                     ' 模拟按键CTRL+V
            Threading.Thread.Sleep(500)                        ' 延时500毫秒
            SendKeys.Send("{ENTER}")                             ' 按下回车键
            ' 关闭Excel文件
            workbook.Close(False)
            excelApp.Quit()
            ' 释放资源
            System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
            ' 清空剪切板
            Clipboard.Clear()
        End If

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    解决方案:

    要使用EPPlus或POI库来复制表格内容并粘贴到微信聊天窗口,您需要做以下步骤:

    1. 首先,您需要从nuget库中安装EPPlus或POI库,以获取这些库的最新版本。在Visual Studio中,可以通过"工具" -> "NuGet包管理器" -> "程序包管理器控制台",然后运行适当的安装命令来完成安装。下面是安装EPPlus和POI库的命令:

    EPPlus安装命令: Install-Package EPPlus

    POI安装命令: Install-Package NPOI

    1. 在代码中引入适当的命名空间:

    2. 对于VB.NET和EPPlus,使用: vb.net Imports OfficeOpenXml Imports System.IO

    3. 对于VB.NET和POI,使用: vb.net Imports NPOI.SS.UserModel Imports NPOI.XSSF.UserModel

    4. 根据您的选择使用EPPlus或POI库进行相应的代码更改。

    5. EPPlus:

      ```vb.net ' 打开Excel文件 Dim excelPackage As New ExcelPackage(New FileInfo(OpenFileDialog1.FileName)) Dim worksheet As ExcelWorksheet = excelPackage.Workbook.Worksheets(3)

    If 行数 = 2 Then Dim range As ExcelRangeBase = worksheet.Cells(复制1) Dim copiedData As Object = range.Value ' 复制1区域的值 Clipboard.SetDataObject(copiedData) ' 将复制的数据放入剪贴板

       Threading.Thread.Sleep(500) ' 延时500毫秒
       SendKeys.Send("^v") ' 粘贴剪贴板中的数据
       Threading.Thread.Sleep(500) ' 延时500毫秒
       SendKeys.Send("{ENTER}") ' 按下回车键
    
       ' 关闭Excel文件
       excelPackage.Dispose()
    
       ' 清空剪切板
       Clipboard.Clear()
    

    End If ```

    • POI:

    ```vb.net ' 打开Excel文件 Dim fs As New FileStream(OpenFileDialog1.FileName, FileMode.Open, FileAccess.Read) Dim workbook As IWorkbook = New XSSFWorkbook(fs) Dim worksheet As ISheet = workbook.GetSheetAt(2) ' 从0开始索引,所以这里是2

    If 行数 = 2 Then Dim range As ICellRange = worksheet.GetCellRangeByName(复制1) Dim copiedData As Object = range.Value ' 复制1区域的值 Clipboard.SetDataObject(copiedData) ' 将复制的数据放入剪贴板

       Threading.Thread.Sleep(500) ' 延时500毫秒
       SendKeys.Send("^v") ' 粘贴剪贴板中的数据
       Threading.Thread.Sleep(500) ' 延时500毫秒
       SendKeys.Send("{ENTER}") ' 按下回车键
    
       ' 关闭Excel文件
       fs.Close()
    
       ' 清空剪切板
       Clipboard.Clear()
    

    End If ```

    请注意,POI库在VB.NET中使用可能需要额外的配置和引用。您可以通过在NuGet程序包管理器控制台中运行以下命令来安装所需的POI库:

    Install-Package NPOI -Version 2.5.1

    1. 保存并运行您的代码,它将使用EPPlus或POI库将表格内容复制到微信聊天窗口。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

使用EPPlus库创建了一个新的Excel文件,然后从另一个Excel文件中复制表格内容到新的Excel文件中。在使用EPPlus库前,请确保你已将EPPlus库添加到你的VB.NET项目中。你可以通过NuGet包管理器来安装EPPlus库。

Imports OfficeOpenXml

Public Class ExcelHelper
    Public Sub CopyTableContent(sourceFilePath As String, destinationFilePath As String)
        Using sourcePackage As New ExcelPackage(New FileInfo(sourceFilePath))
            Using destinationPackage As New ExcelPackage()
                Dim sourceWorksheet As ExcelWorksheet = sourcePackage.Workbook.Worksheets(0)
                Dim destinationWorksheet As ExcelWorksheet = destinationPackage.Workbook.Worksheets.Add("Sheet1")

                ' 复制数据
                For row As Integer = 1 To sourceWorksheet.Dimension.End.Row
                    For col As Integer = 1 To sourceWorksheet.Dimension.End.Column
                        destinationWorksheet.Cells(row, col).Value = sourceWorksheet.Cells(row, col).Value
                    Next
                Next

                destinationPackage.SaveAs(New FileInfo(destinationFilePath))
            End Using
        End Using
    End Sub
End Class