如何在Excel文件c#中创build一个新的工作表?

我需要创build一个非常大的Excel文件,但一个工作表中的Excel文件最多可以包含65k行。 所以,我想把我所有的信息分成几个dynamic的工作表。 这是我的近似代码

//------------------Create Excel App-------------------- Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(numberOfLetters); foreach (string letter in letters) { xlWorkSheet.Cells[rowIndex, 1] = letter; rowIndex++; } xlWorkBook.SaveAs(pathXL, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); 

如何在我的foreach循环中添加新的工作表,并使用一些条件为工作表命名(哪个用户可以在列表中的页面底部的Excel中看到)?

有些人喜欢

  foreach (string letter in letters) { if (letter == SOME) { AddNewWorksheet and give name SOME } xlWorkSheet.Cells[rowIndex, 1] = letter; rowIndex++; } 

以及如何在最后保存所有的工作表?

要将新工作表添加到工作簿,请使用以下代码:

 var xlSheets = xlWorkBook.Sheets as Excel.Sheets; var xlNewSheet = (Excel.Worksheet)xlSheets.Add(xlSheets[1], Type.Missing, Type.Missing, Type.Missing); xlNewSheet.Name = "newsheet"; // Uncomment a line below if you want the inserted sheet to be the last one //xlWorkBook.Sheets.Move(After: xlWorkBook.Sheets.Count); 

保存工作簿调用Save()方法:

 xlWorkBook.Save(); 

这是MSDN中给出的正确的代码。

 Excel.Worksheet newWorksheet; newWorksheet = (Excel.Worksheet)Globals.ThisWorkbook.Worksheets.Add( missing, missing, missing, missing); 

欲了解更多信息,请点击链接

你被限制在65000个.xls的logging中,但是如果你被“允许”超出.xls / 2003,进入到2007和更高的.xlsx,你应该有更多的行。

注意,与你的问题无关,但一段时间后,我已经出口到excel问题与RDLC和表名称我改名使用NPOI库,因为那时我开始使用NPOI更多它是自由/开放源代码和非常强大的(从Java POI移植到.net NPOI),而我说这不是真正的问题的一部分,我不会感到惊讶,如果它有这样做的例子(不,我不为他们工作) http:/ / /npoi.codeplex.com/

这里是我为重命名工作表写的代码(最终用另一个内存stream重新创build工作表

 ------------------------------------------------------------ var excelHelper = new ExcelHelper(bytes); bytes = excelHelper.RenameTabs("Program Overview", "Go Green Plan", "Milestones", "MAT and EOC", "Annual Financials", "Risk Log", "Risk & Opportunity Log", "RAIL", "Meeting Minutes"); Response.BinaryWrite(bytes); Response.End(); ------------------------------------------------------------ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using NPOI.HSSF.UserModel; namespace Company.Project.Core.Tools { public class ExcelHelper { private byte[] _ExcelFile; public ExcelHelper(byte[] excelFile) { _ExcelFile = excelFile; } public byte[] RenameTabs(params string[] tabNames) { byte[] bytes = null; using (MemoryStream ms = new MemoryStream()) { ms.Write(_ExcelFile, 0, _ExcelFile.Length); var workBook = new HSSFWorkbook(ms, true); if (tabNames != null) { using (MemoryStream memoryStream = new MemoryStream()) { for (int i = 0; i < tabNames.Length; i++) { workBook.SetSheetName(i, tabNames[i]); } workBook.Write(memoryStream); bytes = memoryStream.ToArray(); } } } _ExcelFile = bytes; return bytes; } } 

在一般情况下,当你想创build新的表格只是做:

 var worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets.Add(); 

知道你已经创build了如下的工作簿:

 var workbook = excel.Workbooks.Add(Type.Missing);