Как объявить рабочий лист, используя задачу скрипта? - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь объявить рабочий лист для обработки ячеек файла .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, и он не отображает сообщение об ошибке, у меня есть только окно с сообщением об этомсодержащиеся в нем скрипты содержат ошибки компиляции.

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Я действительно не понял, хотите ли вы добавить новый лист или просто отредактировать текущий.Я дам несколько предложений для обоих случаев:

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

Для получения дополнительной информации перейдите по следующим ссылкам:

(b) Версия библиотеки взаимодействия

Убедитесь, что используемая DLL Office.Interop актуальнак версии офиса, установленной на машине.

(c) Проблемы с разрешениями и защитой

Убедитесь, что книга не только для чтения или защищена, вы можете обратиться к следующему вопросу SO:

(d) Приветпроблема рабочих таблиц dden

Также убедитесь, что рабочая книга не содержит скрытых или временных рабочих таблиц, попробуйте перебрать все рабочие таблицы в рабочей книге и отладить код, чтобы увидеть, что происходит.


(2) Добавить новый рабочий лист

Если вы хотите добавить новый рабочий лист в существующую рабочую книгу, вы можете:

(a) Добавить его с помощью скрипта-Task

Вы можете использовать подобный код:

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

Для получения дополнительной информации, вы можете проверить следующие ссылки:

(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

)

Для получения дополнительной информации, вы можете проверить следующие ссылки:

0 голосов
/ 01 февраля 2019

API-интерфейс Office Interop / Object Model основан на запуске кода Office в контексте вашего приложения.Предполагается, что он будет запущен в потоке пользовательского интерфейса интерактивного (т.е. не серверного) приложения.

См. Особенности серверной автоматизации Office

Если вы когда-нибудь это заработаете, произойдет сбой, как минимум, самый неудобныйвремя.

Если вам нужно манипулировать документами Office на сервере, используйте соответствующий API на стороне сервера, такой как OpenXML

...