[英]Generate excel sheet using openxml from database
我需要使用數據庫中的 linq 生成帶有多個選項卡或工作表的 excel 工作表。 如何動態地做到這一點。 我的意思是有沒有辦法從數據庫中動態設置列 header 名稱。 我正在使用 asp.net 內核。 需要從數據庫表中動態生成列名和長度。
請確保您已安裝DocumentFormat.OpenXml
package。您可以參考這里。
這是一個簡單的演示,如下所示:
1.Model:
public class TestModel
{
public int Id { get; set; }
public string Name { get; set; }
public string City { get; set; }
}
2.Controller:
public class TestModelsController : Controller
{
private readonly CreateexcelContext _context;
public TestModelsController(CreateexcelContext context)
{
_context = context;
}
[Route("/excel")]
public void WriteExcelFile()
{
var persons = _context.TestModel.ToList();
DataTable table = (DataTable)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(persons), (typeof(DataTable)));
using (SpreadsheetDocument document = SpreadsheetDocument.Create("TestNewData.xlsx", SpreadsheetDocumentType.Workbook))
{
WorkbookPart workbookPart = document.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
var sheetData = new SheetData();
worksheetPart.Worksheet = new Worksheet(sheetData);
Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());
Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sheet1" };
sheets.Append(sheet);
Row headerRow = new Row();
List<String> columns = new List<string>();
foreach (System.Data.DataColumn column in table.Columns)
{
columns.Add(column.ColumnName);
Cell cell = new Cell();
cell.DataType = CellValues.String;
cell.CellValue = new CellValue(column.ColumnName);
headerRow.AppendChild(cell);
}
sheetData.AppendChild(headerRow);
foreach (DataRow dsrow in table.Rows)
{
Row newRow = new Row();
foreach (String col in columns)
{
Cell cell = new Cell();
cell.DataType = CellValues.String;
cell.CellValue = new CellValue(dsrow[col].ToString());
newRow.AppendChild(cell);
}
sheetData.AppendChild(newRow);
}
workbookPart.Workbook.Save();
}
}
}
我使用 C# 找到了這個示例。 也許它可以為您指明正確的方向。
將 DataTable 導出到 Excel 並在 Z240AA2CEC4B29C56F3BEE520A8DCEE7 中打開 Xml SDK
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.