我真的不明白您是要添加新工作表还是只是编辑当前工作表。我将针对这两种情况给出一些建议:
(1) 编辑现有工作表
如果您要编辑现有工作表,请尝试以下操作之一:
(a) 使用_Worksheet代替Worksheet
Excel._Worksheet xlWorksheet = (Excel._Worksheet)xlWorkbook.Sheets[1];
例如:
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"file.xlsx");
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
欲了解更多信息,请查看以下链接:
- C# 读取 Excel 文件 https://coderwall.com/p/app3ya/read-excel-file-in-c
- 使用 Microsoft.Office.Interop.Excel 从 Excel 2010 读取数据 https://stackoverflow.com/questions/15873389/reading-data-from-excel-2010-using-microsoft-office-interop-excel
- Excel 互操作:_Worksheet 还是 Worksheet? https://stackoverflow.com/questions/1051464/excel-interop-worksheet-or-worksheet
(b) 互操作库版本
检查您使用的 Office.Interop DLL 是否与计算机上安装的 Office 版本相关。
(c) 权限和保护问题
检查工作簿是否为只读或受保护,您可以参考以下SO问题:
- Excel 互操作防止显示密码对话框 https://stackoverflow.com/questions/44168594/excel-interop-prevent-showing-password-dialog
(d) 隐藏工作表问题
另请确保工作簿不包含隐藏或临时工作表,尝试循环工作簿中的所有工作表并调试代码以查看发生了什么情况。
(2) 添加新工作表
如果您希望将新工作表添加到现有工作簿中,您可以:
(a) 通过Script-Task添加
您可以使用类似的代码:
Excel._Worksheet newWorksheet;
newWorksheet = (Excel._Worksheet)ThisWorkbook.Worksheets.Add();
欲了解更多信息,您可以查看以下链接:
- 如何:以编程方式将新工作表添加到工作簿 https://learn.microsoft.com/en-us/visualstudio/vsto/how-to-programmatically-add-new-worksheets-to-workbooks?view=vs-2017
- 如何在 Excel 文件中创建新工作表 C#? https://stackoverflow.com/questions/16705651/how-to-create-a-new-worksheet-in-excel-file-c
(b) 使用执行SQL任务
首先你必须创建一个Excel Connection Manager
,然后添加一个执行 SQL 任务,选择 Excel 连接并编写一个CREATE
声明,例如:
CREATE TABLE
`Excel Destination` (
`PromotionKey` INTEGER,
`PromotionAlternateKey` INTEGER,
`EnglishPromotionName` NVARCHAR(255),
`SpanishPromotionName` NVARCHAR(255),
`FrenchPromotionName` NVARCHAR(255),
`DiscountPct` DOUBLE PRECISION,
`EnglishPromotionType` NVARCHAR(50),
`SpanishPromotionType` NVARCHAR(50),
`FrenchPromotionType` NVARCHAR(50),
`EnglishPromotionCategory` NVARCHAR(50),
`SpanishPromotionCategory` NVARCHAR(50),
`FrenchPromotionCategory` NVARCHAR(50),
`StartDate` DATETIME,
`EndDate` DATETIME,
`MinQty` INTEGER,
`MaxQty` INTEGER
)
欲了解更多信息,您可以查看以下链接:
- SSIS:动态生成Excel表/工作表 https://dwhanalytics.wordpress.com/2011/04/07/ssis-dynamically-generate-excel-tablesheet/