ASP.NET пример экспорта данных в эксель файл

мне нужен пример экспорта данных в эксель файл, причем на сервере не установлен Microsoft Office

Читайте также:

One thought on “ASP.NET пример экспорта данных в эксель файл

  1. anonim

    using DocumentFormat.OpenXml.Packaging;
    using DocumentFormat.OpenXml.Spreadsheet;
    using DocumentFormat.OpenXml;

    //Копируем шаблонный файл template.xlsx
    File.Copy(“template.xlsx”, “generated.xlsx”, true);
    //Открываем скопированный шаблон
    using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open(“generated.xlsx”, true))
    {
    //Получаем доступ к Workbook part, которая содержит все ссылки
    WorkbookPart workbookPart = myWorkbook.WorkbookPart;
    //Получаем первый лист worksheet.
    WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
    // Объект SheetData будет содержать все нужные данные
    SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
    }

    //Коннектимся к базе данных с помощью LinqToSql
    AdventureWorksDataContext db = new AdventureWorksDataContext();

    //Наши данные начинаются со второй строки.
    int index = 2;
    // Выбираем все строки из таблицы SalesTerritory.
    var territoryQuery = from t in db.SalesTerritories select t;
    // Каждую строку из базы данных добавляем на лист экселя spreadsheet
    foreach (var item in territoryQuery)
    {
    string territoryName = item.Name;
    decimal salesLastYear = Math.Round(item.SalesLastYear, 2);
    decimal salesThisYear = Math.Round(item.SalesYTD, 2);
    //Добавляем новую строку
    Row contentRow = CreateContentRow(index, territoryName, salesLastYear, salesThisYear);
    index++;
    //Добавляем новую строку на лист данных экселя
    sheetData.AppendChild(contentRow);
    }

    ///////////////////////////
    // Вспомогательные функции
    ///////////////////////////

    string[] headerColumns = new string[] { “A”, “B”, “C” };
    Row CreateContentRow(int index, string territory, decimal salesLastYear, decimal salesThisYear)
    {
    //Создаем новую строку
    Row r = new Row();
    r.RowIndex = (UInt32)index;
    //Первая ячейка текстовая. Создаем и добавляем ее.
    Cell firstCell = CreateTextCell(headerColumns[0], territory, index);
    r.AppendChild(firstCell);
    //Создаем ячейки таблицы, которые содержат данные
    for (int i=1; i<headerColumns.Length; i++)
    {
    Cell c = new Cell();
    c.CellReference = headerColumns[i] + index;
    CellValue v = new CellValue();
    if (i == 1)
    v.Text = salesLastYear.ToString();
    else
    v.Text = salesThisYear.ToString();
    c.AppendChild(v);
    r.AppendChild(c);
    }
    return r;
    }

    Cell CreateTextCell(string header, string text, int index)
    {
    //Создаем новую ячейку типа InlineString
    Cell c = new Cell();
    c.DataType = CellValues.InlineString;
    c.CellReference = header + index;
    //Добавляем текст в ячейку
    InlineString inlineString = new InlineString();
    Text t = new Text();
    t.Text = text;
    inlineString.AppendChild(t);
    c.AppendChild(inlineString);
    return c;
    }

     
    источник:
    Creating Documents by Using the Open XML Format SDK 2.0 (Part 2 of 3)

    Reply