Чтение электронных таблиц Excel с Delphi

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

Некоторые вещи я посмотрел на:

  • Я попытался использовать ADO, который работает хорошо на выбор всего во всем листе, но у меня не было большой удачи при чтении определенных ячеек или диапазонов.

  • NativeExcel выглядел многообещающим, но это, кажется, не находится в активной разработке, и они не отвечают на электронные письма.

  • Axolot имеет несколько продуктов. Основной продукт, кажется, очень функционален, но дорог. У них есть облегченная версия, но она не поддерживает Delphi 2010.

Какие-либо рекомендации? Свободный было бы большим, но я открыт для коммерческого решения, пока это надежно и хорошо поддерживается.

5
задан pnuts 9 August 2015 в 08:01
поделиться

9 ответов

TMS Flexcel - я знаю, что это похоже на компонент отчетности для Excel (с которым он работает очень хорошо и является очень удобным инструментом в вашем наборе инструментов), но он также включает компоненты для чтения и отображения файлов Excel. Я был очень впечатлен тем, насколько хорошо Адриан Галлеро, кажется, знает API Excel, включая Excel 2007.

http://www.tmssoftware.com/site/flexcel.asp

Не бесплатно, конечно, но на 75 евро Я думаю, это хорошее соотношение цены и качества.

6
ответ дан 18 December 2019 в 06:11
поделиться

Не беспокойтесь о версии Axolot XLSMini (lite). Я еще не купил ни один из них, но я спросил о поддержке Excel 2007 в начале 2008 года, и Ларс сказал мне, что XLSMini основан на XLSReadWriteII и что оба будут обновлены с поддержкой Excel 2007 одновременно. XLSReadWriteII поддерживает Excel 2007 с апреля 2008 года; У XLSMini его до сих пор нет.

1
ответ дан 18 December 2019 в 06:11
поделиться

Не списывайте со счетов NativeExcel. Пользуюсь им уже пару лет и получаю отличные результаты. Это быстро и универсально. Я использую его для создания красиво отформатированной многостраничной электронной таблицы с замороженными панелями, формулами в ячейках и данными из клиентской базы данных, которые они могут использовать для ввода, а затем отправить мне обратно. Мои клиенты были очень взволнованы, когда они получили от меня первую электронную таблицу, потому что она значительно снизила их рабочую нагрузку и была для них довольно интуитивно понятной в использовании.

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

3
ответ дан 18 December 2019 в 06:11
поделиться

Мне очень повезло с ADO, если лист Excel имеет достаточно простую структуру строк и столбцов.

Ключом к использованию ADO, как я обнаружил, является отношение к листу Excel как к базе данных. Если ваши листы Excel представляют собой в основном прямые строки и столбцы, просто воспринимайте строки как записи базы данных, а столбцы - как поля. Сначала перейдите к нужной строке путем поиска значения определенного столбца (поля) (желательно уникального), а затем прочитайте нужную ячейку в этой строке, ссылаясь на поле, которое является именем столбца.

Если ваши листы Excel имеют более свободную форму, то это будет сложнее.

7
ответ дан 18 December 2019 в 06:11
поделиться

Что действительно помогает, так это то, что у вас есть какой-то контроль над компоновкой файла Excel.

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

Я делал все через ADO. Вы можете ограничить свой запрос ADO SQL целым листом, именованным диапазоном или любым диапазоном в этом отношении. По моему мнению и опыту, этот метод очень мощный.

Две вещи, которые действительно вызвали у меня проблемы: 1. в зависимости от того, как названы ваши листы, ADO может или не может их видеть (опять же, если у вас есть контроль над макетом, отлично!) 2. будьте осторожны с типом данных, который ADO возвращает при чтении данных, т.е. он может отображать числа в виде строк. Это потому, что ADO пытается, IIRC, угадать тип данных на основе первых нескольких строк.

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

2
ответ дан 18 December 2019 в 06:11
поделиться

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

Мои 2ct.

0
ответ дан 18 December 2019 в 06:11
поделиться

Брюс, я использую компонент Axolot XLSReadWriteII вот уже 10 лет. Это было очень хорошо, и их форумы поддержки (хотя и ограниченные по содержанию), похоже, очень хорошо отслеживаются.Версия XLSReadWriteII2 невероятно быстра и поддерживает всевозможные вещи, такие как диаграммы и графики, именованные диапазоны, добавление формул на лету, форматирование ячеек (включая границы и затенение, объединение ячеек, вертикальное и горизонтальное выравнивание, автоматическое изменение размера столбца и т. Д. так далее).

Я не обновился до последней версии (мы все еще используем XLSReadWriteII2), потому что мы все еще можем использовать файлы формата Excel XP, а XLSMini я вообще не использовал. Тем не менее, я могу сказать действительно хорошие вещи о полном продукте; Фактически, на прошлой неделе я просто использовал его для пары вещей, связанных с экспортом баз данных.

Если вы решите пойти этим путем, у меня есть несколько заметок о том, как делать разные вещи, которые могут быть полезны; если ты хочешь их, напиши мне записку. У меня также есть приложение Delphi 2007, которое просто показывает, как выполнять различное форматирование и выравнивание; Я фактически воспроизвел существующий, довольно сложный отчет в Excel со всеми форматами, границами и т. Д., Который я бы также рад предоставить вам.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не имею отношения к Axolot или их сотрудникам. Я просто очень счастливый покупатель, который узнал о продукте на предыдущей работе и был достаточно впечатлен, чтобы купить его, когда начал свою нынешнюю.

2
ответ дан 18 December 2019 в 06:11
поделиться

Я бы рекомендовал SMImport / SMExport от http://www.scalabium.com

Майк всегда был очень полезен и быстро отвечал.

3
ответ дан 18 December 2019 в 06:11
поделиться

К счастью, я использую Axolot уже несколько лет. Форум поддержки не совсем переполнен сообщениями, но, может быть, это потому, что он так хорошо работает?

1
ответ дан 18 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: