我试图声明一个工作表来处理.xlsx文件的单元格,但是当我声明工作表对象时,我的C#脚本失败了:
Microsoft.Office.Interop.Excel.Application xlApp = new
Microsoft.Office.Interop.Excel.Application();
Workbook excelBook = xlApp.Workbooks.Open(fileFullPath);
MySheet = (Excel.Worksheet)excelBook.Worksheets[Data_Sheet];
我已经尝试了所有这些语句:
MySheet workSheet = (Worksheet)excelBook.Application.Sheets[1];
MySheet = (Excel.Worksheet)excelBook.Worksheets[1];
甚至
Worksheet MySheet = new Worksheet();
MySheet = excelBook.Worksheets[Data_Sheet];
我在SSIS包中的脚本任务中使用此代码,它没有显示错误消息,只有错误窗口告诉我所包含的脚本具有错误编译功能。
谢谢您的帮助。
答案 0 :(得分:2)
我真的没有,如果你正在寻找增加一个新的工作表或只是编辑当前的一个理解。对于这两种情况,我都会给出一些建议:
如果要编辑现有的工作表,请尝试以下操作之一:
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;
有关更多信息,请检查以下链接:
检查您使用的Office.Interop DLL是否与计算机上安装的officeversion相关。
检查工作簿是否不是只读或受保护的,可以参考以下SO问题:
还要确保工作簿中不包含隐藏的工作表或临时工作表,尝试遍历工作簿中的所有工作表并调试代码以查看发生了什么。
如果您要向现有工作簿添加新工作表,则可以:
可以使用类似的代码:
Excel._Worksheet newWorksheet;
newWorksheet = (Excel._Worksheet)ThisWorkbook.Worksheets.Add();
有关更多信息,您可以检查以下链接:
首先,必须创建一个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
)
有关更多信息,您可以检查以下链接:
答案 1 :(得分:1)
Office Interop /对象模型API基于在应用程序上下文中运行的Office代码。它期望在交互式(即非服务器)应用程序的UI线程上运行。
请参见 Considerations for server-side Automation of Office
如果您确实可以运行,那么它将在最不方便的时间失败。
如果您需要在服务器上处理Office文档,请使用服务器端适当的API,例如OpenXML