我想通过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张…一个叫"某物",一个叫"第二张纸"?我做错了什么?
这段代码用于创建一个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();
}
}
}
}
此代码是直接从我的项目中提取的,请按需要添加代码,希望这将有助于解决您的问题
谢谢