Я кодирую многопоточное приложение C#, которое предоставляет некоторые статистические данные для файла Excel. Я открыл файл по следующему коду:C# Многопоточный доступ к файлу Excel
private static Excel.Application excelApp = new Excel.Application();
private static Excel.Workbook workbook = excelApp.Workbooks.Open(path);
private static Excel.Worksheet worksheet = workbook.ActiveSheet;
private static Excel.Range range = worksheet.UsedRange;
private static int totalColumns = worksheet.UsedRange.Columns.Count;
Для сбора данных из столбцов, я использую одну тему для каждого столбца.
for (int columnCount = 1; columnCount <= /*range.Columns.Count*/totalColumns; columnCount++)
{
Thread worker = new Thread(printSpread);
worker.Start(columnCount);
}
Я получил HRESULT: 0x800A01A8 ошибка, если не начать новый Excel приложения в каждой Thread. Мой вопрос: должен ли я это делать или есть возможность использовать только одно приложение Excel? Я действительно думаю, что существует проблема с доступом к данным только из одного приложения с помощью mulitple Threads, что объясняет исключение COM. Спасибо за ваше время и помощь.
Спасибо! Нашел это, чтобы помочь реализовать [link] (http://stackoverflow.com/questions/14261655/best-fastest-way-to-read-an-excel-sheet-into-a-datatable) –
ОК, это нормально , Я собираюсь изменить свой ответ для завершения –