如何命名我制作的新Excel工作表并将其放在所有工作表的末尾?

时间:2015-06-12 07:11:45

标签: c# excel

我想出了如何在C#中制作新的Excel表格。 我这样做:

private static Microsoft.Office.Interop.Excel.ApplicationClass appExcel;
appExcel.Worksheets.Add();

但我不知道如何为我制作的Excel表格命名,也不知道如何将其放在最后而不是开头。

我试过了:

sheet1 = appExcel.Worksheets.Add();
sheet1.name = "test";

但是这没用。 我也查看了Add函数,但我不能用这种方式填充名称:appExcel.Worksheets.Add("test");

我的代码:

excel_init("C:\\Users\\me\\Desktop\\excel2.xlsx");

private static Microsoft.Office.Interop.Excel.ApplicationClass appExcel;
        private static Workbook newWorkbook_First = null;
        private static _Worksheet objsheet = null;

static void excel_init(String path)
{
    appExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();

    if (System.IO.File.Exists(path))
    {
        // then go and load this into excel
        newWorkbook_First = appExcel.Workbooks.Open(path, true, true,5); // does NOT make 5 excel sheet???
        objsheet = (_Worksheet)appExcel.ActiveWorkbook.ActiveSheet;
    }
    else
    {
        try
        {
            appExcel = new Microsoft.Office.Interop.Excel.ApplicationClass();
            appExcel.Visible = true;
            newWorkbook_First = appExcel.Workbooks.Add(1);
            objsheet = (Microsoft.Office.Interop.Excel.Worksheet)newWorkbook_First.Sheets[1];
        }
        catch (Exception e)
        {
            Console.Write("Error");
        }
        finally
        {
        }
    }
}

1 个答案:

答案 0 :(得分:1)

如果你查看Worksheets.Add的文档,你会得到:

Object Add(
    Object Before,
    Object After,
    Object Count,
    Object Type
)

因此,Add方法既会创建新工作表,又会指定有关如何将其放在Worksheets集合中的各种参数。

  • 在Type之前:System.Object可选对象。一个对象,指定在添加新工作表之前的工作表。
  • After Type:System.Object可选对象。一个对象,指定在其后添加新工作表的工作表。
  • 计数类型:System.Object可选对象。要添加的页数。默认值为1。
  • 类型类型:System.Object可选对象。指定图纸类型。可以是以下XlSheetType常量之一:xlWorksheet,xlChart,xlExcel4MacroSheet或xlExcel4IntlMacroSheet。

所以你需要做的就是:

var newSheet = appExcel.Worksheets.Add(null, appExcel.Worksheets(appExcel.Worksheets.Count), 1, XlSheetType.xlWorksheet);    
newSheet.Name = "myWorkSheet";

这将在最后一个工作表之后创建并返回一个工作表,然后设置名称。

注意:工作表不是基于0的。

<强>更新

因此,根据我在评论中的hackery,这应该是:

 var newSheet = (Microsoft.Office.Interop.Excel.Worksheet)appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet);
 newSheet.Name = "myWorkSheet";

或只是

var newSheet = appExcel.Worksheets.Add(Type.Missing, appExcel.Worksheets[appExcel.Worksheets.Count], 1, XlSheetType.xlWorksheet) as Worksheet;
newSheet.Name = "myWorkSheet";