Я должен читать из и записать в электронные таблицы Excel с помощью Delphi 2010.Ничего особенного. Просто чтение и запись значений от определенных ячеек и диапазонов на различных листах. Потребности работать, не устанавливая Excel и поддерживать Excel 2007.
Некоторые вещи я посмотрел на:
Я попытался использовать ADO, который работает хорошо на выбор всего во всем листе, но у меня не было большой удачи при чтении определенных ячеек или диапазонов.
NativeExcel выглядел многообещающим, но это, кажется, не находится в активной разработке, и они не отвечают на электронные письма.
Axolot имеет несколько продуктов. Основной продукт, кажется, очень функционален, но дорог. У них есть облегченная версия, но она не поддерживает Delphi 2010.
Какие-либо рекомендации? Свободный было бы большим, но я открыт для коммерческого решения, пока это надежно и хорошо поддерживается.
TMS Flexcel - я знаю, что это похоже на компонент отчетности для Excel (с которым он работает очень хорошо и является очень удобным инструментом в вашем наборе инструментов), но он также включает компоненты для чтения и отображения файлов Excel. Я был очень впечатлен тем, насколько хорошо Адриан Галлеро, кажется, знает API Excel, включая Excel 2007.
http://www.tmssoftware.com/site/flexcel.asp
Не бесплатно, конечно, но на 75 евро Я думаю, это хорошее соотношение цены и качества.
Не беспокойтесь о версии Axolot XLSMini (lite). Я еще не купил ни один из них, но я спросил о поддержке Excel 2007 в начале 2008 года, и Ларс сказал мне, что XLSMini основан на XLSReadWriteII и что оба будут обновлены с поддержкой Excel 2007 одновременно. XLSReadWriteII поддерживает Excel 2007 с апреля 2008 года; У XLSMini его до сих пор нет.
Не списывайте со счетов NativeExcel. Пользуюсь им уже пару лет и получаю отличные результаты. Это быстро и универсально. Я использую его для создания красиво отформатированной многостраничной электронной таблицы с замороженными панелями, формулами в ячейках и данными из клиентской базы данных, которые они могут использовать для ввода, а затем отправить мне обратно. Мои клиенты были очень взволнованы, когда они получили от меня первую электронную таблицу, потому что она значительно снизила их рабочую нагрузку и была для них довольно интуитивно понятной в использовании.
Я не знаю, почему они не ответили вам, потому что я обновлял их пакет по крайней мере пару раз за последние два года. Когда истечет срок моей лицензии, я определенно намерен продлить ее.
Мне очень повезло с ADO, если лист Excel имеет достаточно простую структуру строк и столбцов.
Ключом к использованию ADO, как я обнаружил, является отношение к листу Excel как к базе данных. Если ваши листы Excel представляют собой в основном прямые строки и столбцы, просто воспринимайте строки как записи базы данных, а столбцы - как поля. Сначала перейдите к нужной строке путем поиска значения определенного столбца (поля) (желательно уникального), а затем прочитайте нужную ячейку в этой строке, ссылаясь на поле, которое является именем столбца.
Если ваши листы Excel имеют более свободную форму, то это будет сложнее.
Что действительно помогает, так это то, что у вас есть какой-то контроль над компоновкой файла Excel.
Я создал целую структуру модульного и приемочного тестирования, в которой данные и элементы управления тестированием содержатся в электронной таблице Excel.
Я делал все через ADO. Вы можете ограничить свой запрос ADO SQL целым листом, именованным диапазоном или любым диапазоном в этом отношении. По моему мнению и опыту, этот метод очень мощный.
Две вещи, которые действительно вызвали у меня проблемы: 1. в зависимости от того, как названы ваши листы, ADO может или не может их видеть (опять же, если у вас есть контроль над макетом, отлично!) 2. будьте осторожны с типом данных, который ADO возвращает при чтении данных, т.е. он может отображать числа в виде строк. Это потому, что ADO пытается, IIRC, угадать тип данных на основе первых нескольких строк.
Отказ от ответственности: я никогда не использовал ни один из упомянутых выше инструментов. ADO помогло мне, и я чувствую себя лучше, так как написал код для своего фреймворка (за исключением части ADO, очевидно ...).
Я бы посоветовал выбрать вариант, в котором вам не нужно устанавливать Excel на машине. Однажды я использовал компонент, который мог легко заполнить некоторые данные на одном листе без необходимости установки Excel. Я бы также сделал большую часть работы в Excel на самом листе Excel. И просто используйте компоненты, чтобы заполнить некоторые данные на листе.
Мои 2ct.
Брюс, я использую компонент Axolot XLSReadWriteII вот уже 10 лет. Это было очень хорошо, и их форумы поддержки (хотя и ограниченные по содержанию), похоже, очень хорошо отслеживаются.Версия XLSReadWriteII2 невероятно быстра и поддерживает всевозможные вещи, такие как диаграммы и графики, именованные диапазоны, добавление формул на лету, форматирование ячеек (включая границы и затенение, объединение ячеек, вертикальное и горизонтальное выравнивание, автоматическое изменение размера столбца и т. Д. так далее).
Я не обновился до последней версии (мы все еще используем XLSReadWriteII2), потому что мы все еще можем использовать файлы формата Excel XP, а XLSMini я вообще не использовал. Тем не менее, я могу сказать действительно хорошие вещи о полном продукте; Фактически, на прошлой неделе я просто использовал его для пары вещей, связанных с экспортом баз данных.
Если вы решите пойти этим путем, у меня есть несколько заметок о том, как делать разные вещи, которые могут быть полезны; если ты хочешь их, напиши мне записку. У меня также есть приложение Delphi 2007, которое просто показывает, как выполнять различное форматирование и выравнивание; Я фактически воспроизвел существующий, довольно сложный отчет в Excel со всеми форматами, границами и т. Д., Который я бы также рад предоставить вам.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не имею отношения к Axolot или их сотрудникам. Я просто очень счастливый покупатель, который узнал о продукте на предыдущей работе и был достаточно впечатлен, чтобы купить его, когда начал свою нынешнюю.
Я бы рекомендовал SMImport / SMExport от http://www.scalabium.com
Майк всегда был очень полезен и быстро отвечал.
К счастью, я использую Axolot уже несколько лет. Форум поддержки не совсем переполнен сообщениями, но, может быть, это потому, что он так хорошо работает?