试图添加多个表格来优化

我试图以编程方式添加工作表到一个新的Excel文档。

我的预期输出是名为'test1-20'的表,但是我得到'Sheet1-19,test20'。

为什么这不工作?

Workbook workbook; Application objExcel; objExcel = new Application(); objExcel.Visible = false; objExcel.DisplayAlerts = false; for (var i = 0; i < worksheets.Count; i++) { workbook= objExcel.Workbooks.Add(Missing.Value); var worksheet = (Worksheet)workbook.Worksheets.get_Item(i + 1); worksheet.Name = string.Format("test{0}", i + 1); } 

尝试这个:

 using System; using System.Runtime.InteropServices; using Excel = Microsoft.Office.Interop.Excel; void MyMethod() { try { var _excel = new Excel(); var wb = _excel.Workbooks.Add(); var collection = new Microsoft.Office.Interop.Excel.Worksheet[20]; for (var i = 19; i >= 0; i--) { collection[i] = wb.Worksheets.Add(); collection[i].Name = String.Format("test{0}", i + 1); } for (var i = 0; i < 3; i++) { wb.Worksheets[21].Delete(); } //collection is an array of worksheet objects, //the worksheet objects in your workbook. //You can access each individual worksheet and //work with it in the same way you access any object in an array var thisWorksheet = collection[9]; var thisRange = thisWorksheet.Range["A1"]; thisRange.Value = "Hello World"; wb.SaveAs(@"c:\test\whatever.xlsx"); wb.Close(); } finally { Marshal.ReleaseComObject(_excel); } } 

默认情况下,您的可见属性设置为false,因此不需要明确地执行此操作,上述代码中不显示警报,因此这也不是必需的。 我已经testing了上面的代码,并可以确认它的工作原理。

这是我的代码,这样做:

 ' first worksheet If oExcel.Application.Sheets.Count() < 1 Then oSheet = CType(oBook.Worksheets.Add(), Excel.Worksheet) Else oSheet = oExcel.Worksheets(1) End If oSheet.Name = "one" oSheet.Range("B1").Value = "First One" ' second If oExcel.Application.Sheets.Count() < 2 Then oSheet = CType(oBook.Worksheets.Add(), Excel.Worksheet) Else oSheet = oExcel.Worksheets(2) End If oSheet.Name = "two" oSheet.Range("B1").Value = "Second one" ' third If oExcel.Application.Sheets.Count() < 3 Then oSheet = CType(oBook.Worksheets.Add(), Excel.Worksheet) Else oSheet = oExcel.Worksheets(3) End If oSheet.Name = "three" oSheet.Range("B1").Value = "Thrid" ' next If oExcel.Application.Sheets.Count() < 4 Then oSheet = CType(oBook.Worksheets.Add(), Excel.Worksheet) Else oSheet = oExcel.Worksheets(4) End If oSheet.Name = "four" oSheet.Range("B1").Value = "Four"