以下是在VB.NET中使用Microsoft.Office.Interop.Excel庫來分割工作表的示例代碼:
Imports Microsoft.Office.Interop Public Class ExcelHelper Public Shared Sub SplitWorksheet(filePath As String, maxRowsPerSheet As Integer) ' 創(chuàng)建Excel應(yīng)用程序?qū)ο? Dim excelApp As New Excel.Application() ' 打開工作簿 Dim workbook As Excel.Workbook = excelApp.Workbooks.Open(filePath) ' 獲取第一個工作表 Dim worksheet As Excel.Worksheet = workbook.Sheets(1) ' 獲取工作表的總行數(shù) Dim totalRows As Integer = worksheet.UsedRange.Rows.Count ' 計算需要創(chuàng)建的工作表數(shù)量 Dim sheetCount As Integer = Math.Ceiling(totalRows / maxRowsPerSheet) ' 循環(huán)創(chuàng)建工作表 For i As Integer = 1 To sheetCount ' 創(chuàng)建一個新的工作表 Dim newWorksheet As Excel.Worksheet = workbook.Sheets.Add(After:=workbook.Sheets(workbook.Sheets.Count)) ' 獲取當(dāng)前工作表的起始行和結(jié)束行 Dim startRow As Integer = (i - 1) * maxRowsPerSheet + 1 Dim endRow As Integer = Math.Min(i * maxRowsPerSheet, totalRows) ' 將原工作表中的數(shù)據(jù)復(fù)制到新工作表中 Dim rangeToCopy As Excel.Range = worksheet.Range("A" & startRow.ToString(), "Z" & endRow.ToString()) rangeToCopy.Copy(newWorksheet.Range("A1")) ' 對新工作表進(jìn)行必要的操作,例如設(shè)置標(biāo)題等 newWorksheet.Cells(1, 1).Value = "Sheet " & i.ToString() ' 保存新工作表 newWorksheet.SaveAs(filePath.Replace(".xlsx", "_" & i.ToString() & ".xlsx")) ' 釋放資源 System.Runtime.InteropServices.Marshal.ReleaseComObject(newWorksheet) Next ' 關(guān)閉工作簿 workbook.Close() ' 釋放資源 System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook) System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet) ' 關(guān)閉Excel應(yīng)用程序 excelApp.Quit() ' 釋放資源 System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp) End Sub End Class
使用示例:
Dim filePath As String = "C:\path\to\your\file.xlsx" Dim maxRowsPerSheet As Integer = 65536 ' 每個工作表的最大行數(shù) ExcelHelper.SplitWorksheet(filePath, maxRowsPerSheet)
此代碼將打開給定的Excel文件,將第一個工作表分割成不超過65536行的多個工作表,并將其保存為單獨(dú)的文件。每個新工作表的標(biāo)題將設(shè)置為"Sheet 1"、"Sheet 2"等。請確保在使用Microsoft.Office.Interop.Excel庫之前已將其添加到項目引用中。
如對本文有疑問,請?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會為你解答??! 點(diǎn)擊進(jìn)入論壇