Чтение из файла Excel в C - PullRequest
7 голосов
/ 12 июля 2010

Я хочу прочитать из файла Excel на C. Файл Excel 2007 содержит около 6000 строк и 2 столбца.Я хочу сохранить содержимое в двумерном массиве в C. Если существует библиотека C или любой другой метод, пожалуйста, сообщите мне.

Ответы [ 3 ]

12 голосов
/ 12 июля 2010

Excel 2007 хранит данные в виде набора файлов, большинство из которых в формате XML, и все они объединены в ZIP-файл.Если вы хотите просмотреть содержимое, вы можете переименовать ваш .xlsx в whatever.zip, а затем открыть его и посмотреть на файлы внутри.

Предполагая, что ваш файл Excel содержит только необработанные данные, и все, что вам нужноabout читает его (т.е. вам не нужно / нужно обновить его содержимое и заставить Excel открыть его снова), чтение данных на самом деле довольно легко.Внутри zip-файла вы ищете подкаталог xl\worksheets\, который будет содержать несколько файлов .xml, по одному для каждой таблицы из Excel (например, рабочая книга по умолчанию будет иметь три таблицы с именами sheet1.xml, sheet2.xml и sheet3.xml).

Внутри них вы ищете тег <sheet data>.Внутри этого у вас будут <row> теги (по одному на каждую строку данных), а внутри них <c> теги с атрибутом r=RC, где RC заменяется обычной нотацией строк / столбцов (например,, «А1»).Тег <c> будет иметь вложенный тег <v>, в котором вы найдете значение для этой ячейки.

Я чувствую себя обязанным добавить предупреждение: хотя чтение действительно простых данных действительно может быть таким простымжизнь может быстро усложнить lot , если вы решите сделать гораздо больше, чем просто читать простые строки / столбцы чисел.Попытка сделать что-либо, даже немного более сложное, чем это, может сделать лот более сложным в спешке.

3 голосов
/ 12 июля 2010

Другая библиотека C для чтения данных из файлов Excel находится здесь здесь .

3 голосов
/ 12 июля 2010

У вас есть несколько вариантов:
1) Сохраните ваш лист Excel в CSV-файл и проанализируйте его.
2) Используйте COM API (Windows проприетарный и хитрый)
3) Смссылка для класса C ++, который вы можете изменить.

...