Отчеты в Excel с asp.net - PullRequest
       15

Отчеты в Excel с asp.net

0 голосов
/ 17 августа 2011

У меня есть файлы Excel (.xlsx) (шаблон), и мне нужно заполнить данными некоторые части Excel из базы данных сервера SQL.Это возможно?Если это не возможно, каков наилучший способ достичь этого?Я также думаю о службах отчетов сервера SQL.Пожалуйста, дайте мне знать.

Спасибо за любые предложения.

Ответы [ 3 ]

1 голос
/ 18 августа 2011

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

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

Службы отчетов

Элемент управления очень легко интегрировать в существующее решение ASP.NET, безопасность основана на WindowsАутентификация, поэтому безопасность управляется в SQL Server / Active Directory.Обычно в своих небольших приложениях я использую олицетворение, чтобы отключить защиту и установить скрытые параметры отчета для управления отчетом.Отчеты создаются в BIDS / VS с использованием графического интерфейса и очень похожи на создание отчетов в Access.Элемент управления также поддерживает экспорт в множество различных форматов (PDF, XLS, DOC и т. Д.).

Редактирование файлов XLS без Excel

У меня естьпоследние несколько лет я пользуюсь NPOI , и это здорово, легко управлять / манипулировать документами XLS, такими как шаблоны.Вот пример создания шаблона в NPOI .

Пример

// Open Template
FileStream fs = new FileStream(Server.MapPath(@"\template\Template_EventBudget.xls"), FileMode.Open, FileAccess.Read);

// Load the template into a NPOI workbook
HSSFWorkbook templateWorkbook = new HSSFWorkbook(fs, true);

// Load the sheet you are going to use as a template into NPOI
HSSFSheet sheet = templateWorkbook.GetSheet("Event Budget");

// Insert data into template
sheet.GetRow(1).GetCell(1).SetCellValue(EventName.Value);  // Inserting a string value into Excel
sheet.GetRow(1).GetCell(5).SetCellValue(DateTime.Parse(EventDate.Value));  // Inserting a date value into Excel

sheet.GetRow(5).GetCell(2).SetCellValue(Double.Parse(Roomandhallfees.Value));  

Direct XLS/ XLSX с OLE

Другое решение для работы напрямую с файлами XLS и XLSX - использование OleDbConnection, установленного с 2007 Системный драйвер Office .

Пример

 using (
            OleDbConnection con =
                new OleDbConnection(
                    @"Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties=Excel 12.0;Data Source=" + SourceFile +
                    @";Extended Properties=Excel 12.0;"))
        {
            con.Open();
            string sql = String.Format("SELECT * FROM [{0}$]", sheetName);
            OleDbDataAdapter da = new OleDbDataAdapter(sql, con);

            da.Fill(dt);
        }

Использование SSIS для заполнения шаблона Excel

Все это делается в SQL Server,вывод может быть отправлен по почте или помещен в папку.Я использую этот подход, если мне нужно автоматизировать отправку определенных файлов Excel с помощью специального форматирования / формул / и т. Д. ... Это настройка с помощью BIDS / VS в пакете служб SSIS.Вы создадите поток данных с помощью Адресата Excel .У этого подхода есть некоторые ограничения, используйте ссылку для получения подробной информации.

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

1 голос
/ 18 марта 2013

Я использовал механизм электронных таблиц. это платный, но очень хороший инструмент.

1 голос
/ 17 августа 2011

Это может дать вам несколько указателей:

http://www.codeproject.com/KB/aspnet/coolcode2_aspx.aspx

http://www.haneng.com/asp-forum/insert-data-into-excel-file-from-aspx_12640.html

Это Поиск в Google

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...