您现在的位置: 365建站网 > 365文章 > vb.net调用Microsoft.Office.Interop.Excel.dll 超过65536行报错解决方法

vb.net调用Microsoft.Office.Interop.Excel.dll 超过65536行报错解决方法

文章来源:365jz.com     点击数:236    更新时间:2023-12-01 09:20   参与评论

vb.net调用Microsoft.Office.Interop.Excel.dll 超过65536行报错解决方法

以下是在VB.NET中使用Microsoft.Office.Interop.Excel库来分割工作表的示例代码:

</>code

  1. Imports Microsoft.Office.Interop
  2. Public Class ExcelHelper
  3.     Public Shared Sub SplitWorksheet(filePath As String, maxRowsPerSheet As Integer)
  4.         ' 创建Excel应用程序对象
  5.         Dim excelApp As New Excel.Application()
  6.         ' 打开工作簿
  7.         Dim workbook As Excel.Workbook = excelApp.Workbooks.Open(filePath)
  8.         ' 获取第一个工作表
  9.         Dim worksheet As Excel.Worksheet = workbook.Sheets(1)
  10.         ' 获取工作表的总行数
  11.         Dim totalRows As Integer = worksheet.UsedRange.Rows.Count
  12.         ' 计算需要创建的工作表数量
  13.         Dim sheetCount As Integer = Math.Ceiling(totalRows / maxRowsPerSheet)
  14.         ' 循环创建工作表
  15.         For i As Integer = 1 To sheetCount
  16.             ' 创建一个新的工作表
  17.             Dim newWorksheet As Excel.Worksheet = workbook.Sheets.Add(After:=workbook.Sheets(workbook.Sheets.Count))
  18.             ' 获取当前工作表的起始行和结束行
  19.             Dim startRow As Integer = (i - 1) * maxRowsPerSheet + 1
  20.             Dim endRow As Integer = Math.Min(i * maxRowsPerSheet, totalRows)
  21.             ' 将原工作表中的数据复制到新工作表中
  22.             Dim rangeToCopy As Excel.Range = worksheet.Range("A" & startRow.ToString(), "Z" & endRow.ToString())
  23.             rangeToCopy.Copy(newWorksheet.Range("A1"))
  24.             ' 对新工作表进行必要的操作,例如设置标题等
  25.             newWorksheet.Cells(1, 1).Value = "Sheet " & i.ToString()
  26.             ' 保存新工作表
  27.             newWorksheet.SaveAs(filePath.Replace(".xlsx", "_" & i.ToString() & ".xlsx"))
  28.             ' 释放资源
  29.             System.Runtime.InteropServices.Marshal.ReleaseComObject(newWorksheet)
  30.         Next
  31.         ' 关闭工作簿
  32.         workbook.Close()
  33.         ' 释放资源
  34.         System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook)
  35.         System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet)
  36.         ' 关闭Excel应用程序
  37.         excelApp.Quit()
  38.         ' 释放资源
  39.         System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
  40.     End Sub
  41. End Class


使用示例:

</>code

  1. Dim filePath As String = "C:\path\to\your\file.xlsx"
  2. Dim maxRowsPerSheet As Integer = 65536  ' 每个工作表的最大行数
  3. ExcelHelper.SplitWorksheet(filePath, maxRowsPerSheet)

此代码将打开给定的Excel文件,将第一个工作表分割成不超过65536行的多个工作表,并将其保存为单独的文件。每个新工作表的标题将设置为"Sheet 1"、"Sheet 2"等。请确保在使用Microsoft.Office.Interop.Excel库之前已将其添加到项目引用中。


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (236人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号