OpenXML асинхронно C # - PullRequest
       12

OpenXML асинхронно C #

0 голосов
/ 03 октября 2018

Для тех, кто разбирается в OpenXML, я использую файл Excel (как ресурс) в качестве шаблона для создания автоматически сгенерированных файлов Excel.

Я копирую файл в MemoryStream, и после работы с шаблоном он автоматически загружает файл на компьютер пользователя.

Файл Excel огромен (около 40 листов) и имеетмного информации, в основном финансовые вещи.Генерация занимает некоторое время, и я бы хотел, чтобы это было быстрее.

Я думал, можно ли использовать мой метод для асинхронного изменения таблицы Excel.Вместо того, чтобы работать по одному листу за раз, делайте их все асинхронно.Я никогда не использовал async, поэтому я полностью осматриваю это.

Метод для работы с листом ничего не возвращает, он просто меняет текущий используемый MemoryStream.

Iя изменил определение метода на

public async Task UpdateExcelUsingOpenXmlsdkAsync(string xmlStr, string fileName)

Я создал список задач.

List<Task> sheetTasks = new List<Task>();

И я завернул свои вызовы метода внутри

sheetTasks.Add(Task.Run(() => indice.TreatExcelSheetIndice(ds.Tables["ROW"], header.Tables["RELATORIO"], spreadSheet)));

Это выполняется внутри foreach с переключателем внутри, чтобы обрабатывать каждый лист по-разному

После foreach у меня есть это

await Task.WhenAll(sheetTasks);

И затем сохранить электронную таблицу.Но это не работает.Кто-нибудь знает, возможно ли это?

...