как создать и загрузить документ excel с помощью asp.net
Как создать и загрузить документ excel с помощью asp.net ?
цель состоит в том, чтобы использовать xml, linq или что угодно, чтобы отправить документ excel клиенту через браузер.
Edit:пример использования
клиент загружает gridview (сделанный с AJAX framework ) в браузере, gridview напрямую связан с базой данных sql. Я поставил кнопку "экспорт в excel", чтобы позволить клиенту сохранить эти данные gridview на своем компьютере, и я хотел бы запустить чистая загрузка excel.
предлагаемые здесь решения не являются чистыми, например, отправить html-документ и изменить заголовок на документ excel и т.д., Я ищу простое решение на codeplex прямо сейчас, я дам вам знать.
4 ответов
стартовый комплект
сначала я скачал Open XML Format SDK 2.0.
он поставляется с 3 полезными инструментами в :
C:\Program файлы\Open XML формат SDK\V2.0\tools
-
DocumentReflector.exe
wich авто создайте c# для построения таблицы из кода. -
OpenXmlClassesExplorer.exe
дисплей Спецификация Ecma и класс документация (с использованием стиля MSDN формат.) -
OpenXmlDiff.exe
графически сравнить два файла Open XML и поиск ошибки.
Я предлагаю всем, кто начинают переименовать .XLSX-файл to .zip, поэтому вы можете увидеть XML-файлы, которые управляют нашей электронной таблицей (например, наши листы находятся в "xl\worksheets" ).
код
отказ от ответственности: я украл весь код из MSDN технические статья; D
следующий код использовать *.шаблон документа я сделал вручную, чтобы иметь возможность изменить его.
ссылки на пространства имен
using System.IO;
using System.Xml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using DocumentFormat.OpenXml;
// Database object
DataClassesDataContext db = new DataClassesDataContext();
// Make a copy of the template file.
File.Copy(@"C:\inetpub\wwwroot\project.Web\Clients\Handlers\oxml-tpl\livreurs.xlsx", @"C:\inetpub\wwwroot\project.Web\Clients\Handlers\oxml-tpl\generated.xlsx", true);
// Open the copied template workbook.
using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(@"C:\inetpub\wwwroot\project.Web\Clients\Handlers\oxml-tpl\generated.xlsx", true))
{
// Access the main Workbook part, which contains all references.
WorkbookPart workbookPart = myWorkbook.WorkbookPart;
// Get the first worksheet.
WorksheetPart worksheetPart = workbookPart.WorksheetParts.ElementAt(2);
// The SheetData object will contain all the data.
SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
// Begining Row pointer
int index = 2;
// Database results
var query = from t in db.Clients select t;
// For each item in the database, add a Row to SheetData.
foreach (var item in query)
{
// Cell related variable
string Nom = item.Nom;
// New Row
Row row = new Row();
row.RowIndex = (UInt32)index;
// New Cell
Cell cell = new Cell();
cell.DataType = CellValues.InlineString;
// Column A1, 2, 3 ... and so on
cell.CellReference = "A"+index;
// Create Text object
Text t = new Text();
t.Text = Nom;
// Append Text to InlineString object
InlineString inlineString = new InlineString();
inlineString.AppendChild(t);
// Append InlineString to Cell
cell.AppendChild(inlineString);
// Append Cell to Row
row.AppendChild(cell);
// Append Row to SheetData
sheetData.AppendChild(row);
// increase row pointer
index++;
}
// save
worksheetPart.Worksheet.Save();
}
Я еще не закончил, моя вторая задача-автоматически загрузить электронную таблицу после модификации.
наконец, я перенаправляю пользователя на мой сгенерированный spredsheet (из моего aspx)
context.Response.Redirect("Oxml-tpl/generated.xlsx");
просто набор ответов.ContentType = " application / vnd.ms-excel " и ваша страница будет отображаться как лист excel в браузере клиентов
существует довольно много способов обработки этого, в зависимости от того, насколько обширна функциональность Excel. Ответ Binoj работает, если Excel-это просто электронная таблица и не имеет встроенных функций Excel. Клиент может добавить функциональность, concats, etc. Это "тупые" документы excel, пока клиент не сделает soemthing.
чтобы создать более полнофункциональный документ Excel, у вас есть два основных варианта,которые я могу придумать.
используйте либо офис компоненты (re: bad) для создания документа excel или стороннего компонента, например, ExcelWriter SoftArtisan. Отличный компонент, но есть цена.
используйте элемент управления на странице, который позволяет экспортировать в Excel. Большинство поставщиков ASSP.NET элементы управления имеют эту функцию в своих сетках.
опция #1 позволяет вам практически всю функциональность Excel. Вариант № 2 немного более ограничен, по крайней мере, в управления, которые я пробовал.
хорошая статья, как экспорт в Excel из Эрли Эрика http://blogs.msdn.com/erikaehrli/archive/2009/01/30/how-to-export-data-to-excel-from-an-asp-net-application-avoid-the-file-format-differ-prompt.aspx