openxml - 我们如何将数据写入excel模板并在OpenXML中维护模板格式?
问题描述
我能够使用 openxml 读取 excel 模板,并且能够将数据附加到工作表中。但无法维护现有的 Excel 模板格式,无法识别列标题
请找到下面使用的代码
if (ds.Tables.Count > 0 && ds.Tables[0] != null || ds.Tables[0].Columns.Count > 0)
{
System.Data.DataTable table = ds.Tables[0];
using (var spreadsheetDocument = SpreadsheetDocument.Open(filePath, true))
{
WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart;
Sheet sheet = spreadsheetDocument.WorkbookPart.Workbook.Sheets.GetFirstChild<Sheet>();
Worksheet worksheet = (spreadsheetDocument.WorkbookPart.GetPartById(sheet.Id.Value) as WorksheetPart).Worksheet;
SheetData sheetData = worksheet.GetFirstChild<SheetData>();
List<String> columns = new List<string>();
IEnumerable<Row> rows = worksheet.GetFirstChild<SheetData>().Descendants<Row>();
foreach (DataColumn column in table.Columns)
{
columns.Add(column.ColumnName);
Cell cell = new Cell();
cell.DataType = CellValues.String;
cell.CellValue = new CellValue(column.ColumnName);
}
foreach (DataRow row in table.Rows)
{
Row newRow = new Row();
columns.ForEach(col =>
{
Cell cell = new Cell();
//If value is DBNull, do not set value to cell
if (row[col] != System.DBNull.Value)
{
cell.DataType = CellValues.String;
cell.CellValue = new CellValue(row[col].ToString());
}
newRow.AppendChild(cell);
});
sheetData.AppendChild(newRow);
}
spreadsheetDocument.WorkbookPart.Workbook.Save();
spreadsheetDocument.Close();
}
解决方案
请澄清您的具体问题,并提供您正在使用的实际代码片段和示例模板,以便我们更好地了解您的问题并在该问题上为您提供帮助。
有较早的帖子“<a href="https://stackoverflow.com/questions/19658267/openxml-sdk-2-5-excel-template">OpenXML SDK 2.5 Excel 模板”在模板中查找名称为 DataField 的标签,并替换为数据。这可能是您正在寻找的。
推荐阅读
- swift - 如何制作一个在组合中发送多个值的发布者
- css - 弹性容器中弹性项目的 100% 总宽度,中间有间隙
- sql - SQL:我可以避免在联合中重新计算查询吗?
- typescript - 为什么比较两个接口时extends返回false?
- android - 如何使白色按钮在白色图像上可见
- amazon-web-services - AWS API Gateway - 映射由破折号分隔的动态 URL
- deep-learning - 如何反向传播已保存的经验
- spring-boot - 使用 spring-native 创建 docker 映像时出现 CA 错误
- python - 在多索引熊猫数据框中添加计算指标
- python - 如何使用异步方法模拟 Python 数据类?