Чтение данных Excel из C#

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

    Microsoft.Office.Interop.Excel.Application excelObj = new Application();

    Microsoft.Office.Interop.Excel.Workbook myBook = excelObj.Workbooks.Open(@"D:\myFile.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 0, 0);

    Microsoft.Office.Interop.Excel.Worksheet mySheet = (Worksheet)myBook.Sheets.get_Item(1);

    Range range = mySheet.Cells.EntireRow;

Здесь диапазон становится всем диапазоном и не ограничивается количеством столбцов заголовков. Также у меня есть огромные данные около 10 000 строк для обработки.


person Niranjan    schedule 27.09.2011    source источник


Ответы (3)


Я думаю, вы ищете это:

Range headers = mySheet.UsedRange.Rows(1);
person phoog    schedule 27.09.2011

Если ваше требование не требует обратной записи в файл excel, я бы посоветовал вам использовать Excel Data Reader (http://exceldatareader.codeplex.com/), его намного проще использовать, он не требует excel на сервере и быстрее

person iamkrillin    schedule 27.09.2011
comment
+1. Да! Весь этот интероп-церемониал... зеваю. А если вы тоже хотите писать: Flexcel или Gembox (хотя и не бесплатно). - person Gert Arnold; 27.09.2011
comment
инструмент gr8 ... но я также хотел экспортировать обратно в Excel :) - person Niranjan; 28.09.2011

Я только что ответил на другой вопрос о чтении Excel здесь: .csv без Excel

Библиотека FileHelpers идеально подходит для вашей задачи. Я сам использую его для этого количества строк и выше.

Я не знаю, что вы делаете со строками после того, как они прочитаны из Excel, но если вы смотрите на какую-то обработку, которую можно разбить на этапы, взгляните на Rhino.Etl. Это действительно мощный способ обработки больших объемов данных.

person Mikael Östberg    schedule 27.09.2011