Вы можете войти с помощью:

OpenID

Пример OpenID: http://your.name.myopenid.comЗарегистрировать OpenID
 

Google Account

 
ВопросыСтатьиМеткиНаписать статьюЗадать вопросВойти
ASP.NET пример экспорта данных в эксель файл

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

0 комментариев Новый комментарий
Ответы (1)
 1:  using DocumentFormat.OpenXml.Packaging; 
 2:  using DocumentFormat.OpenXml.Spreadsheet; 
 3:  using DocumentFormat.OpenXml;
 4:   
 5:  //Копируем шаблонный файл template.xlsx
 6:  File.Copy("template.xlsx", "generated.xlsx", true);
 7:  //Открываем скопированный шаблон
 8:  using (SpreadsheetDocument myWorkbook = SpreadsheetDocument.Open("generated.xlsx", true)) 
 9:  { 
 10:     //Получаем доступ к Workbook part, которая содержит все ссылки
 11:     WorkbookPart workbookPart = myWorkbook.WorkbookPart;
 12:     //Получаем первый лист worksheet. 
 13:     WorksheetPart worksheetPart = workbookPart.WorksheetParts.First();
 14:     // Объект SheetData будет содержать все нужные данные
 15:     SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>(); 
 16:  }
 17:   
 18:  //Коннектимся к базе данных с помощью LinqToSql
 19:  AdventureWorksDataContext db = new AdventureWorksDataContext();
 20:   
 21:  //Наши данные начинаются со второй строки.
 22:  int index = 2;
 23:  // Выбираем все строки из таблицы SalesTerritory.
 24:  var territoryQuery = from t in db.SalesTerritories select t; 
 25:  // Каждую строку из базы данных добавляем на лист экселя spreadsheet
 26:  foreach (var item in territoryQuery)
 27:  { 
 28:     string territoryName = item.Name;
 29:     decimal salesLastYear = Math.Round(item.SalesLastYear, 2);
 30:     decimal salesThisYear = Math.Round(item.SalesYTD, 2); 
 31:     //Добавляем новую строку
 32:     Row contentRow = CreateContentRow(index, territoryName, salesLastYear, salesThisYear); 
 33:     index++; 
 34:     //Добавляем новую строку на лист данных экселя
 35:     sheetData.AppendChild(contentRow);
 36:  }
 37:   
 38:  ///////////////////////////
 39:  // Вспомогательные функции
 40:  ///////////////////////////
 41:   
 42:  string[] headerColumns = new string[] { "A", "B", "C" };
 43:  Row CreateContentRow(int index, string territory, decimal salesLastYear, decimal salesThisYear)
 44:  { 
 45:     //Создаем новую строку
 46:     Row r = new Row();
 47:     r.RowIndex = (UInt32)index; 
 48:     //Первая ячейка текстовая. Создаем и добавляем ее.
 49:     Cell firstCell = CreateTextCell(headerColumns[0], territory, index);
 50:     r.AppendChild(firstCell);
 51:     //Создаем ячейки таблицы, которые содержат данные
 52:     for (int i=1; i<headerColumns.Length; i++)
 53:     {
 54:        Cell c = new Cell();
 55:        c.CellReference = headerColumns[i] + index;
 56:        CellValue v = new CellValue();
 57:        if (i == 1)
 58:           v.Text = salesLastYear.ToString();
 59:        else
 60:           v.Text = salesThisYear.ToString();
 61:        c.AppendChild(v);
 62:        r.AppendChild(c);
 63:     }
 64:     return r;
 65:  }
 66:   
 67:  Cell CreateTextCell(string header, string text, int index)
 68:  {
 69:     //Создаем новую ячейку типа InlineString 
 70:     Cell c = new Cell();
 71:     c.DataType = CellValues.InlineString;
 72:     c.CellReference = header + index;
 73:     //Добавляем текст в ячейку
 74:     InlineString inlineString = new InlineString();
 75:     Text t = new Text();
 76:     t.Text = text;
 77:     inlineString.AppendChild(t);
 78:     c.AppendChild(inlineString);
 79:     return c;
 80:  }

 

официальная статья на msdn:

Creating Documents by Using the Open XML Format SDK 2.0 (Part 2 of 3)

 

 

0 комментариев Новый комментарий


MyFolder 2.0 lite
Нужно поставить пароль на папку? Попробуйте бесплатно программу MyFolder 2.0

All rights reserved. © 2009 Expert Coders Community.