Обновление определенного листа в Excel с помощью C# в пакете SSISC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Обновление определенного листа в Excel с помощью C# в пакете SSIS

Сообщение Anonymous »


Я проверил похожие вопросы, и все они, кажется, обновляют ВСЕ листы и в целом. Я создал проект SSIS в Visual Studio 2019. У меня есть много файлов Excel, которые мне нужно открыть и обновить. Они извлекают данные из других листов и таблиц/представлений SQL. Существует еще один лист, который затем преобразует/объединяет данные со всех остальных листов. Если я использую RefreshAll ниже, мне нужно дать ему время, и иногда один или два листа по какой-то причине зависают и занимают слишком много времени, и чаще всего консолидированный лист заканчивается раньше последнего из других листов и остается неполный.

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

Я знаю, что это трудная задача. Я был бы в порядке, вызывая сценарий несколько раз, который принимает имя файла и имя листа, обновляет этот единственный лист и не требует указания времени. У меня были странные времена при передаче переменной «путь+имя файла» в скрипт, поэтому я жестко запрограммировал свою. Однако я не мог понять, как обновить ОДИН лист!
public void Main() { Dts.TaskResult = (int)ScriptResults.Success; ///string fileName = (string)Dts.Variables["$package::ExcelFileName"].Value; строка fileName = @"C:\Master List (Consolidated).xlsx"; Excel.Приложение m_objExcel; Excel.Workbooks m_objBooks; Excel.Workbook m_objBook; пытаться { m_objExcel = новый Excel.Application(); m_objBooks = (Excel.Workbooks)m_objExcel.Workbooks; m_objBook = (Excel.Workbook)m_objBooks.Open(имя_файла, Тип.Отсутствует, Тип.Отсутствует, Тип.Отсутствует, Тип.Отсутствует, Тип.Отсутствует, Тип.Отсутствует, Тип.Отсутствует, Тип.Отсутствует, Тип.Отсутствует, Тип.Отсутствует, Тип.Отсутствует, Тип.Отсутствует); Thread.Sleep(3000); m_objBook.RefreshAll(); Thread.Sleep(10000); m_objBook.Сохранить(); m_objBook.Close(); m_objExcel.Выход(); } catch (исключение-исключение) { MessageBox.Show("Я обнаружил ошибку"); используя (StreamWriter sw = File.CreateText("C:\\log\\" + "ErrorLog_" + DateTime.Now.ToString("yyyMMddHHmmss") + ".log")) { sw.WriteLine(Exception.ToString()); Dts.TaskResult = (int)ScriptResults.Failure; } } окончательно { m_objBook = ноль; m_objBooks = ноль; m_objExcel = ноль; GC.Собрать(); } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»