【问题标题】:How to name a new Excel sheet I made and place it at the end of all the sheets?如何命名我制作的新 Excel 工作表并将其放在所有工作表的末尾?
【发布时间】:2015-08-28 02:57:48
【问题描述】:

我想出了如何用 C# 制作一个新的 Excel 工作表。 我是这样做的:

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

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

我试过了:

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

但这没有用。 我也查看了添加函数,但我不能这样填写名称: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
        {
        }
    }
}

【问题讨论】:

  • this question 有帮助吗?请注意,看起来 1 是他们选择开头的方式,因此将其替换为张数应该会给您结尾。
  • 我明白了,马上试试
  • 修正名称:在函数 excel_init > else > try { objsheet.Name = ("test");
  • 但是还是不知道怎么添加多张表

标签: c# excel


【解决方案1】:

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

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

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

  • 在类型之前:System.Object 可选对象。一个对象,它指定在其之前添加新工作表的工作表。
  • 之后类型:System.Object 可选对象。一个对象,它指定在其后添加新工作表的工作表。
  • 计数类型:System.Object 可选对象。要添加的工作表数。默认值为一。
  • 类型类型: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 的。

更新:

因此,根据我在 cmets 中的骇客行为,这应该是:

 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";

【讨论】:

  • 遇到错误@第二个工作集:Non-invocable member 'Microsoft.Office.Interop.Excel.ApplicationClass.Worksheets' cannot be used like a method.'
  • 哦,然后将“(”更改为“[”。appExcel.Worksheets[appExcel.Worksheets.Count]
  • 它现在运行,但我收到此错误:HRESULT 异常:0x800A03EC
  • 呃。它可能是空的。 COM 不喜欢它。尝试将其忽略,然后使用 appExcel.Worksheets.Add(, appExcel.Worksheets(appExcel.Worksheets.Count), 1, XlSheetType.xlWorksheet); 如果它无法编译,那么在我查找占位符时请紧紧抓住。
  • 我没有编译,谢谢你帮助我顺便说一句,对我有很大帮助
猜你喜欢
  • 2014-01-08
  • 2017-08-12
  • 1970-01-01
  • 2012-08-12
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2017-03-03
  • 2018-06-02
相关资源
最近更新 更多