我想通过c#创建Excel工作簿后只添加一个工作表

本文关键字:添加 工作 一个 创建 工作簿 Excel | 更新日期: 2023-09-27 18:02:36

代码如下

        Excel.Application appC = new Excel.Application();  
        appC.Visible = true;              
        Excel.Workbook bookC = appC.Workbooks.Add(1);  
        Excel.Worksheet sheetC = bookC.Worksheets.Add();  
        sheetC.Name = "something";

命令Workbook.Add()接受一个参数,该参数应该确定将在工作簿中创建多少工作表…对吧?

那么为什么我得到2张…一个叫"某物",一个叫"第二张纸"?我做错了什么?

我想通过c#创建Excel工作簿后只添加一个工作表

这段代码用于创建一个Excel应用程序对象,并打开一个只有一个工作表的工作簿,并按您的意愿命名它:

Excel.Application appC = new Excel.Application();    
appC.SheetsInNewWorkbook = 1;       
appC.Visible = true;     
Excel.Workbook bookC = appC.Workbooks.Add();    
Excel.Worksheet sheetC = appC.Sheets.get_Item(1);   
sheetC.Name = "name-of-sheet";

工作簿的参数。"添加"不指定页数。

请参阅Add方法的MSDN描述。

您可能应该使用常量xlWBATWorksheet,而不仅仅是"1"。

[我不在工作,手边没有Excel;可能这个常数的值实际上是1,在这种情况下,这不会产生(函数)差异。另一种方法是在创建工作簿之前设置SheetsInNewWorkbook属性,或者在创建工作簿之后简单地删除不需要的工作表。

我也面临同样的问题。您需要像这样添加一个表单:

//add 1 sheet
_workbookTemp.Sheets.Add(Type.Missing, Type.Missing, 1, Type.Missing);
//move this sheet to the last position
_workbookTemp.ActiveSheet.Move(After: _workbookTemp.Sheets[_workbookTemp.Sheets.Count]);

如果你使用vs 2010它是不同的,你可以使用下面的代码来添加工作表到工作簿这我已经尝试过在vs 2010这对我来说是有效的我使用excel 2007工作簿项目模板

void AddSheet()
{
 OpenFileDialog excelSheetToOpen = new OpenFileDialog();
            excelSheetToOpen.Filter = "Excel 97- 2003 WorkBook (*.xls)| *.xls | Excel 2007 WorkBook (*.xlsx) | *.xlsx | All files (*.*)|*.*";
            excelSheetToOpen.FilterIndex = 3;
            excelSheetToOpen.Multiselect = false;
             Excel.Worksheet ws = Globals.ThisWorkbook.Worksheets.get_Item("RunningParameters");

             if (excelSheetToOpen.ShowDialog() == DialogResult.OK)
             {
                 Excel.Application excelApp = new Excel.Application();
                 String workbookPath = excelSheetToOpen.FileName;
                 Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath);
                 Excel.Sheets excelWorkBookSheets = excelWorkbook.Sheets;
                 Excel.Range _UsedRangeOftheWorkSheet;

                 foreach (Excel.Worksheet _Sheet in excelWorkBookSheets)
                 {
                     if (_Sheet.Name == ws.get_Range("B3").Value)
                     {
                         _Sheet.UsedRange.Copy();
                         _UsedRangeOftheWorkSheet = _Sheet.UsedRange;
                         Object [,] s = _UsedRangeOftheWorkSheet.Value;                        

                         Excel.Worksheet _WorkingSheet = Globals.ThisWorkbook.Sheets.Add(ws);
                         _WorkingSheet.Name = "WorkingSheet";
                         _WorkingSheet.Paste();

                     }
                 }  
             }

}

此代码是直接从我的项目中提取的,请按需要添加代码,希望这将有助于解决您的问题

谢谢