Trying to add multiple sheets to excel

前端 未结 2 1988
萌比男神i
萌比男神i 2020-12-21 03:36

i\'m trying to programmatically add sheets to a new excel document.

my expected output is sheets named \'test1-20\' but instead i get \'Sheet1-19, test20\'.

相关标签:
2条回答
  • 2020-12-21 04:16

    Here is my code that does this:

    ' 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"
    
    0 讨论(0)
  • 2020-12-21 04:26

    Try this:

    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);
        }
    }
    

    Your visible property is set to false by default, so it is not neccessary to do this explicitly, no alerts are displayed in the above code so this isn't neccessary either. I have tested the above code and can confirm it works.

    0 讨论(0)
提交回复
热议问题