![](/img/trans.png)
[英]C# - How to save a single Excel WorkSheet in the current WorkBook?
[英]C# Excel - save each worksheet to a new workbook
我有一個excel有25個左右的工作表我只想保存每個工作表,因為它是自己的新工作簿。 當我運行代碼時,它會復制整個工作簿而不是單個工作表。 任何幫助都是極好的。
string FileDropLocation = @"C:\ExcelFiles";
string file_FullFileName = @"C:\ts\Conversion\v2.xlsx";
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbook workBook = app.Workbooks.Open(file_FullFileName, 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
for (int i = 0; i < workBook.Worksheets.Count; i++)
{
Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Sheets[i+1];
workSheet.SaveAs(FileDropLocation + "\\" + workSheet.Name);
}
workBook.Close();
嘗試使用此代替當前的for
循環及以下
foreach(Worksheet sheet in workBook.Worksheets)
{
var newbook = app.Workbooks.Add(1);
sheet.Copy(newbook.Sheets[1]);
newbook.SaveAs(FileDropLocation + "\\" + sheet.Name);
newbook.Close();
}
workBook.Close();
請注意,我相信Workbooks.Add()
放置在默認的空白頁(通常是Sheet1)中,因此如果您只想復制的表單,則必須明確刪除它。
我知道這很有效。
Microsoft.Office.Interop.Excel.Application xl = null;
Microsoft.Office.Interop.Excel._Workbook wb = null;
xl = new Microsoft.Office.Interop.Excel.Application();
xl.SheetsInNewWorkbook = 1;
xl.Visible = true;
wb = (Microsoft.Office.Interop.Excel._Workbook)(xl.Workbooks.Add(Type.Missing));
wb.SaveAs(FileDropLocation + "\\" + workBook.Sheets[i + 1].Name, Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
wb.Close(true, Type.Missing, Type.Missing);
xl.Quit();
Microsoft.Office.Interop.Excel.Workbook destWorkbook = null;
Microsoft.Office.Interop.Excel.Worksheet workSheet = null;
Microsoft.Office.Interop.Excel.Worksheet newWorksheet = null;
destWorkbook = app.Workbooks.Open(FileDropLocation + "\\" + workBook.Sheets[i + 1].Name + ".xls", false, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Sheets[i + 1];
newWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)destWorkbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
app.DisplayAlerts = false;
workSheet.Copy(Type.Missing,newWorksheet);
destWorkbook.Save();
...您需要在循環中創建一個新工作簿並將工作表移動到該工作簿。 我用VB編程,所以我猜,但你的foor循環中的代碼應該是這樣的:
Microsoft.Office.Interop.Excel.Workbook workBook2 = app.Workbooks.Add(Missing.Value)
Microsoft.Office.Interop.Excel.Worksheet workSheet = (Microsoft.Office.Interop.Excel.Worksheet)workBook.Sheets[i+1];
workSheet.Copy(workBook2.Sheets(1))
然后你可以添加代碼來刪除其他工作表等。
希望有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.