C#拆分工作薄
时间: 2023-07-12 07:16:37 浏览: 33
您可以使用C#中的Microsoft.Office.Interop.Excel库来拆分工作簿。以下是一个简单的示例代码,该代码会将一个工作簿拆分为多个工作簿,每个工作簿包含指定行数的行数据:
```csharp
using Excel = Microsoft.Office.Interop.Excel;
public void SplitWorkbook(string filePath, int rowsPerSheet)
{
Excel.Application app = new Excel.Application();
Excel.Workbook workbook = null;
try
{
workbook = app.Workbooks.Open(filePath);
for (int i = 1; i <= workbook.Sheets.Count; i++)
{
Excel.Worksheet sheet = (Excel.Worksheet)workbook.Sheets[i];
Excel.Range range = sheet.UsedRange;
int rowCount = range.Rows.Count;
if (rowCount > rowsPerSheet)
{
int sheetCount = (int)Math.Ceiling((double)rowCount / (double)rowsPerSheet);
for (int j = 1; j <= sheetCount; j++)
{
int startRow = (j - 1) * rowsPerSheet + 1;
int endRow = Math.Min(startRow + rowsPerSheet - 1, rowCount);
Excel.Workbook newWorkbook = app.Workbooks.Add();
Excel.Worksheet newSheet = (Excel.Worksheet)newWorkbook.Sheets[1];
range = sheet.Range[sheet.Cells[startRow, 1], sheet.Cells[endRow, range.Columns.Count]];
range.Copy(newSheet.Range["A1"]);
newWorkbook.SaveAs(string.Format("{0}_part_{1}.xlsx", filePath, j));
newWorkbook.Close();
}
}
}
}
finally
{
if (workbook != null)
{
workbook.Close();
}
app.Quit();
}
}
```
此代码将打开指定的Excel文件,遍历其中的每个工作表,并将每个工作表拆分为指定行数的工作表。拆分后的工作表将保存为单独的Excel文件。您可以根据需要修改代码来满足您的要求。