Альтернатива MS-Access / Excel для работы с электронными таблицами - PullRequest
6 голосов
/ 14 февраля 2009

У меня есть приложение MS-Access, которое форматирует данные в две большие электронные таблицы (более 20 000 строк), импортирует эти данные в таблицы, выполняет несколько запросов для сравнения данных и выводит результаты в виде файлов Excel.

Проблема в том, что по мере роста приложения (и кода VBA) становится все труднее использовать Access, и мне интересно, есть ли лучший подход?

Каковы преимущества / недостатки решения .NET (C #) по сравнению с MS-Access, и какие библиотеки лучше всего использовать?

Приветствия

Breandán

Приветствую ответы до сих пор, хотя я забыл упомянуть, что это приложение должно быть автономным, мне нужно иметь возможность упаковать приложение и отправить его конечному пользователю для установки на его компьютер. На нем установлены только (обратите внимание) MS-Office и .Net Framework, поэтому я не уверен, насколько возможен MySQL и т. Д., Где его не будет.

Ответы [ 8 ]

5 голосов
/ 15 февраля 2009

Переход на .Net позволит вам иметь в своем распоряжении лучшие инструменты для манипулирования данными.

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

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

Трудно действительно дать рекомендацию, не зная больше о вашем проекте.

Если вы просто хотите использовать автоматизацию для извлечения данных и создания файла Excel, тогда .Net может не предложить вам много, так как вам все равно придется делать то же самое, что вы уже сделали в Access.

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

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

Мой совет:

  • Если ваше решение Access стабильно и оно выполняет свою работу, то вы можете рассмотреть вопрос о его сохранении.
    Переход на новую систему будет стоить вам времени и денег, и вы должны проверить, стоит ли результат инвестиций.
  • Если вы чувствуете себя слишком ограниченными возможностями Access, потратьте некоторое время на эксперименты с различными решениями и компонентами, которые позволяют вам манипулировать Excel, например с помощью поставщика LINQ Excel ( 1 или 2 ) может обеспечить хорошую абстракцию или попробовать различные коммерческие компоненты , пока не найдете тот, который соответствует вашим потребностям.

Если вы идете по маршруту .Net, вам может даже не понадобиться база данных для обработки данных.
Однако, если вы это сделаете, вы всегда можете использовать Jet - или его новую версию, ACE - в качестве серверной части, которая будет создавать базы данных MSAccess.
Он уже установлен на большинстве машин и хорошо поддерживается инструментами MS.
Другими хорошими вариантами являются SQL Server Compact и SQLite, поскольку ни один из них не требует сложной настройки, просто DLL-библиотека для вашего проекта.

2 голосов
/ 15 февраля 2009

В SpreadsheetGear , наша специальность - высокопроизводительные компоненты электронных таблиц, совместимые с Excel. Мы все время слышим (см. Несколько цитат клиентов на на этой странице ), что SpreadsheetGear for .NET быстрее и проще в использовании, чем другие варианты.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * *} * *.

Отказ от ответственности: я владею SpreadsheetGear LLC

2 голосов
/ 15 февраля 2009

Я бы сказал, что для томов данных с 20000 строками, с которыми вы работаете, база данных сервера SQL на самом деле не принесет вам много пользы, кроме перехода к хранимым процедурам для манипулирования данными. В этом отношении он, возможно, лучше, чем VBA, поэтому вы, вероятно, получите код, который более удобен в обслуживании. Однако объемы данных, которые вы описываете, крошечные по стандартам базы данных. Я не ожидал, что производительность будет проблемой, пока у вас не будет данных на один-два порядка больше.

Если вы хотите выполнить работу munging data , вам лучше использовать язык сценариев, такой как Perl или Python . Эти языки намного лучше для задач манипулирования данными, чем C # или VB.Net. Хорошие, бесплатные дистрибутивы Windows как для Perl, так и для Python можно найти по адресу www.activestate.com .

Excel можно создавать с Python через интерфейс python-com , используя тот же API, что и VBA, но получая гораздо лучший язык с огромным разнообразием доступных библиотек. Точно так же это можно сделать с помощью Perl через Win32 :: OLE . Есть также некоторые служебные библиотеки, такие как pyexcelerator , xlrd и xlwt , для Python и Spreadsheet :: WriteExcel / Spreadsheet :: ParseExcel для Perl. Есть также модули, доступные для создания устанавливаемых приложений Windows, такие как Py2EXE или Perl Dev Kit

В этом посте Stackoverflow обсуждается использование Excel из Python, в том числе создание оболочки с MakePy, немного более подробно.

Если вы работаете с .Net, вы также можете попробовать IronPython - это нативная реализация .Net Python, которая будет работать где угодно с установленной подходящей средой выполнения .Net. Вы также можете получить бесплатный плагин для Visual Studio под названием IronPythonStudio ).

Другая альтернатива - R . R - это, прежде всего, статистический пакет, но основной язык обладает мощными возможностями манипулирования данными и множеством библиотек интерфейса (и других, таких как графика, различные статистические вычисления и интерфейс Excel. . Это на самом деле довольно мощный общий инструмент для работы с данными и отчетности.

1 голос
/ 15 февраля 2009

SpreadsheetGear полностью потрясающий! Вы получаете лучшее из обоих миров, где вся логика в электронной таблице доступна для выполнения из вашего кода. Вы действительно можете сократить свою разработку, так как у вас могут быть подразделения, помогающие формировать логику для их бизнес-процессов.

1 голос
/ 14 февраля 2009

Библиотека Apache POI может быть вам полезна. Он основан на Java и может работать с файлами Excel.

Другим вариантом может быть использование прямого драйвера ODBC для работы с файлом XLS. Хотя может быть много записей ..

http://poi.apache.org/

Проект POI состоит из API-интерфейсов для управления различными форматами файлов на основе формата составного документа Microsoft OLE 2 и формата Office OpenXML с использованием чистой Java. Короче говоря, вы можете читать и писать файлы MS Excel, используя Java. Кроме того, вы можете читать и писать файлы MS Word и MS PowerPoint, используя Java. POI - это ваше решение Java Excel (для Excel 97-2007). Однако у нас есть полный API для переноса других форматов составных документов OLE 2, и мы приглашаем других принять участие.

Файлы на основе сложного формата документов OLE 2 включают в себя большинство файлов Microsoft Office, таких как XLS и DOC, а также форматы файлов на основе API сериализации MFC.

Файлы на основе формата Office OpenXML включают новые (2007+) форматы файлов на основе xml, включая офисные файлы Microsoft, такие как XLSX, DOCX и PPTX.

Редактировать: Проверьте инструмент, подобный Monarch Pro , он великолепен при извлечении данных и т. Д.

0 голосов
/ 15 февраля 2009

Мне кажется, что Access не помогает вам как посреднику. 20K строк звучат не так много для меня. Вы сказали, что переходите из Excel в Access, а затем обратно в Excel. Вам нужно хранить данные о доступе?

Если нет, я бы предложил использовать .Net и стороннюю библиотеку Excel, например FlexCel , и сразу перейти из Excel в Excel в памяти. Упаковывать приложения .Net легко с помощью установщика или ClickOnce .

0 голосов
/ 15 февраля 2009

Я хотел бы рассмотреть систему, в которой для начала использовался SQL Server Compact. Вы можете использовать его без установки, если хотите (хотя я предлагаю вам это сделать, гораздо проще просто предположить, что требуемый dll находится в GAC). Если впоследствии вы обнаружите, что вам нужны дополнительные функции (например, хранимые процедуры или столбцы TEXT / BLOB, и тому подобное), то переход на SQL Server будет тривиальным.

Если ваша база данных обновляется каждый раз, тогда пробовать разные вещи просто, как указывать на другой файл.

Если у вас есть значительный код в VBA, я бы предложил сначала переместить его в VB.Net (чтобы упростить этот, первый и наиболее подверженный ошибкам переход), а затем перенести его на c #, если вы этого желаете.

Что касается создания / изменения листа Excel, у вас есть три варианта.

Нужно использовать VSTO , хотя Wikipedia - гораздо лучшее описание. Это будет ближе всего к вашей старой разработке VBA, хотя она имеет совершенно другой набор сложностей.

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

Последнее - просто выгрузить csv и позволить Excel справиться с ним, когда вы откроете его.

0 голосов
/ 15 февраля 2009

Интересно, перерос ли ты Access? Для этого и созданы более надежные базы данных, такие как SQL Server. 20000 строк не так уж много для SQL Server, но я готов поспорить, что он есть и для Access. Сколько дискового пространства занимает Access, когда вы его запускаете? Насколько быстро растут данные, если вообще?

Насколько хорошо вы знаете C # против VB? Если вы плохо знаете C #, это может быть хорошей возможностью для обучения. Это проблема, которую вы уже хорошо знаете.

...