如何申报使用脚本任务工作表?

问题描述 投票:3回答:2

我想声明一个工作表来处理.xlsx文件的细胞,但是当我宣布Worksheet对象我的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包脚本任务这个代码,它不显示我的错误讯息,我只有错误窗口告诉我,所包含的脚本有错误编译。

谢谢您的帮助。

c# excel ssis etl script-task
2个回答
2
投票

我真的,如果你正在寻找增加一个新的工作表或只是编辑当前并没有理解。我给这两种情况提出了一些建议:

(1) Edit an existing Worksheet

如果您正在寻找编辑现有工作表,请尝试以下之一:

(a)使用_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;

欲了解更多信息,请至以下链接:

(二)互操作库版本

检查你使用的是Office.Interop DLL是相关的安装在机器上的officeversion。

(三)许可和保护问题

检查工作簿不是只读或者是受保护的,你可以参考下面的SO问题:

(d)隐藏的工作表问题

另外,还要确保工作簿不包含隐藏或临时工作表,尝试循环遍历该工作簿和调试代码的所有工作表,看看是怎么回事。


(2) Add a new Worksheet

如果你正在寻找一个新的工作表添加到现有的工作簿中,您可以:

(一)通过脚本任务添加它

您可以使用类似的代码:

Excel._Worksheet newWorksheet;
newWorksheet = (Excel._Worksheet)ThisWorkbook.Worksheets.Add();

欲了解更多信息,可以查看以下链接:

(二)使用执行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

)

欲了解更多信息,可以查看以下链接:


1
投票

办公室互操作/对象模型API是基于应用程序的上下文中运行Office代码。它期望的交互(即非服务器)的应用程序的UI线程上运行。

Considerations for server-side Automation of Office

如果你做得到这个工作,它会在差不多是最不方便的时候失败。

如果你需要操纵一台服务器上的Office文档,使用像OpenXML的服务器端相应的API

© www.soinside.com 2019 - 2024. All rights reserved.