gpt4 book ai didi

c# - 使用来自数据库的 openxml 生成 excel 表

转载 作者:行者123 更新时间:2023-12-05 01:14:23 25 4
gpt4 key购买 nike

我需要使用数据库中的 linq 生成包含多个选项卡或工作表的 Excel 工作表。如何动态地做到这一点。我的意思是有什么方法可以从数据库中动态设置列标题名称。我正在使用 asp.net 核心。 需要从数据库表中动态生成列名和长度。

最佳答案

请确认您已经安装了DocumentFormat.OpenXml包。您可以引用here .

这是一个简单的演示,如下所示:

1.型号:

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();
}
}
}

3.结果: enter image description here

关于c# - 使用来自数据库的 openxml 生成 excel 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58649004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com