1
데이터 테이블에 여러 테이블이 있습니다. 각 테이블이 다른 워크 시트에있는 Excel로 내보내려고합니다. OpenXML을 사용하여 어떻게 할 수 있습니까?하지만 열의 데이터 유형 (예 : 문자열, 날짜, 숫자 등)을 유지하고 싶습니다. 현재 내가 가진 :OpenXML을 사용하여 Excel로 데이터 집합
using (SpreadsheetDocument workbook = SpreadsheetDocument.Create(fileName,
SpreadsheetDocumentType.Workbook)){
workbook.AddWorkbookPart();
workbook.WorkbookPart.Workbook = new Workbook {Sheets = new Sheets()};
uint sheetId = 1;
var sheetPart = workbook.WorkbookPart.AddNewPart<WorksheetPart>();
var sheetData = new SheetData();
sheetPart.Worksheet = new Worksheet(sheetData);
var sheets = workbook.WorkbookPart.Workbook.GetFirstChild<Sheets>();
string relationshipId = workbook.WorkbookPart.GetIdOfPart(sheetPart);
if (sheets.Elements<Sheet>().Any())
{
sheetId = sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1;
}
var sheet = new Sheet
{
Id = relationshipId,
SheetId = sheetId,
Name = exportedSheet
};
sheets.Append(new List<OpenXmlElement> {sheet});
var headerRow = new Row();
var columns = new List<string>();
foreach (DataColumn column in extractedData.Columns)
{
columns.Add(column.ColumnName);
var cell = new Cell
{
DataType = CellValues.String,
CellValue = new CellValue(column.ColumnName)
};
headerRow.AppendChild(cell);
}
sheetData.AppendChild(headerRow);
foreach (DataRow dsrow in extractedData.Rows)
{
var newRow = new Row();
DataRow dsrow1 = dsrow;
foreach (Cell cell in columns.Select(col => new Cell
{
DataType = CellValues.String,
CellValue = new CellValue(dsrow1[col].ToString())
}))
{
newRow.AppendChild(cell);
}
sheetData.AppendChild(newRow);
}}
열을 포맷 하시겠습니까? 또는 xlsx에서 .net으로 다시 데이터를로드 하시겠습니까? – Aron