Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过C创建Excel工作簿后,我只想添加一张工作表#_C#_Excel_Interop_Export To Excel - Fatal编程技术网

C# 通过C创建Excel工作簿后,我只想添加一张工作表#

C# 通过C创建Excel工作簿后,我只想添加一张工作表#,c#,excel,interop,export-to-excel,C#,Excel,Interop,Export To Excel,代码是这样的 Excel.Application appC = new Excel.Application(); appC.Visible = true; Excel.Workbook bookC = appC.Workbooks.Add(1); Excel.Worksheet sheetC = bookC.Worksheets.Add(); sheetC.Name = "so

代码是这样的

        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()
接受一个参数,该参数用于确定将在工作簿中创建多少张工作表。。。对吧?

为什么我要买两张床单。。。一个叫“某物”,一个叫“第二张”?
我做错了什么

如果您使用的是vs 2010,则会有所不同。您可以使用以下代码将工作表添加到工作手册中此我在vs 2010中尝试过此方法此方法适用于我im使用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();



                     }
                 }  

             }


}
这段代码是直接从我的项目中提取的。请根据需要修改代码,希望这将有助于解决您的问题


谢谢

如果您使用的是vs 2010,则会有所不同。您可以使用以下代码将工作表添加到工作手册中此我在vs 2010中尝试过此方法此方法适用于我im使用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();



                     }
                 }  

             }


}
这段代码是直接从我的项目中提取的。请根据需要修改代码,希望这将有助于解决您的问题


感谢将参数添加到工作簿。添加未指定图纸数量

请参阅Add方法的示例

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


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

工作簿的参数。添加未指定图纸数量

请参阅Add方法的示例

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


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

这是创建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";

这是创建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 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]);

我也面临同样的问题。您需要添加这样的工作表:

//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]);

谢谢你的回复!但是你确定这段代码只生成了一张工作表吗?如果这段代码执行一次,如果它运行了不止一次,它将向工作簿中添加一张excel工作表。它将抛出一个异常,表示工作簿中存在另一张同名工作表。我认为这段代码没有解决OP的问题@Prabhakantha也许你可以再看看你的代码,看看它与创建一个只包含一张工作表的工作簿的关系,而不是将一张工作表添加到现有工作簿中……谢谢你的回复!但是你确定这段代码只生成了一张工作表吗?如果这段代码执行一次,如果它运行了不止一次,它将向工作簿中添加一张excel工作表。它将抛出一个异常,表示工作簿中存在另一张同名工作表。我认为这段代码没有解决OP的问题@Prabhakantha也许你可以再看看你的代码,看看它与创建一个只包含一张工作表的工作簿的关系,而不是将一张工作表添加到现有的工作簿中…Tnx的答案是,你是对的Gary McGill我发现。。。我知道msdn描述,但它不是很有用。。它说SheetSinewWorkbook属性可以做到这一点,但对于像我这样的新手用户来说,这一点都没有帮助,我怎么知道SheetSinewWorkbook是应用程序的属性,而不是工作簿或工作表呢。。我花了两个小时才发现。。这就是为什么我把问题贴在这里。。msdn肯定需要更多的描述,更清晰,每个类、方法、属性至少需要一个示例。。再次感谢,我将很快发布代码!Tnx对于答案,你是对的Gary McGill我发现。。。我知道msdn描述,但它不是很有用。。它说SheetSinewWorkbook属性可以做到这一点,但对于像我这样的新手用户来说,这一点都没有帮助,我怎么知道SheetSinewWorkbook是应用程序的属性,而不是工作簿或工作表呢。。我花了两个小时才发现。。这就是为什么我把问题贴在这里。。msdn肯定需要更多的描述,更清晰,每个类、方法、属性至少需要一个示例。。再次感谢,我将很快发布代码!