2012-06-07 4 views
0

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

1) нужно создать файл CSV
Excel откроет его и форматировать данные с каждого значения происходит в одну ячейку, каждая строка одна строка.
Недостатки: расширение файла не всегда открывается по умолчанию.
Кажется, что он «отключен» на очень больших источниках данных. Из памяти он ударил около 65 000 строк, прежде чем остальная часть файла была «проигнорирована» excel.

2) Создание XML-электронной таблица
http://msdn.microsoft.com/en-us/library/bb226687(v=office.11).aspx
Недостатки: Ошибка при открытии-х «файл, который вы пытаетесь открыть ** в другом формате, чем указано расширением файла». Он отлично работает, но это не внушает доверия.
Делает запись SQL-to-XML неудобной.

Я кратко рассмотрел использование excel Interop методов некоторое время назад. И я уверен, что у меня были проблемы при попытке запустить код с сервера, на котором не установлено excel/office. Это будет почти всегда будет иметь дело.

Обычно код запускается либо через веб-страницу, либо через службу WCF Silverlight (если это имеет значение).
И либо отправил по электронной почте пользователю, либо был бы неплохо иметь возможность просто открыть файл прямо сейчас и разрешить им сэкономить.
Включая заголовки/цвета/эта формула будет бонус

В основном на данный момент они просто копировать/вставить данные.
Но с большим набором данных он подвержен сбою или просто очень медленный.

Любых дать мне лучшие идеи, как идти об этом

+1

Вы можете написать таблицу HTML и использовать расширение * .xls. Excel преобразует его в файл Excel при первом открытии. Нет поддержки формул, но дает вам немного форматирования. Помимо этого, единственным вариантом является использование стороннего инструмента. – JDB

+0

Re interop «почти всегда будет иметь дело» - что будет, Excel не будет установлен или установленный Excel? –

+0

Какое расширение XML-файла вызывает сообщение о «другом формате»? –

ответ

1

Вы можете использовать коммерческий продукт, например Aspose.Cells для создания таблицы Excel в C# на сервере без установленного офиса. У них есть sample code, которые генерируют электронную таблицу на странице aspx.cs, если вы хотите посмотреть, как выглядит объектная модель.

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

+0

Спасибо. Но я не думаю, что покупка коммерческого решения будет вариантом. –

1

Поскольку CSV имеет проблему отсечения после большого количества строк, этот подход отсутствует.

Использование Interop сложно. В дополнение к тому, что на сервере установлены Excel и PIA, вам нужно запустить код Excel в одном потоке (используя какой-то механизм очередей). В противном случае вы начнете сталкиваться с проблемами на этом фронте.

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

PS. Если вы можете определить количество строк перед созданием листа Excel (что вам нужно), вы можете доставить результаты в одном из двух форматов: CSV для небольших файлов, XML для больших, компромисс - это путаное сообщение (предоставляется что он не исчезнет). В зависимости от процента файлов, превышающих порог CSV, это может быть приемлемым компромиссом.

+0

Я попытался сохранить его как «.xml» - но он не открывается по умолчанию с помощью excel (IE обычно). И «.xls», который дает вышеприведенное сообщение об ошибке при открытии. (Я тестировал Office 2007, но я думаю, что формат spreadsheetML может быть в 2003 году, что добавляет путаницы). –

+0

Вы пробовали .xlsx? –

+0

.xslx не открывается вообще! Хотя .xls дает мне предупреждение, но позволяет мне открывать его в любом случае. Xlsx просто говорит, что он поврежден/недействителен и закрывается. –

1

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

Смежные вопросы