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