【发布时间】:2017-05-25 19:24:59
【问题描述】:
我希望使用 NPOI 库导出 excel 表。有什么方法可以在不丢失数据格式的情况下将数据表插入到sheet中?
以前,我曾经使用 Gembox 电子表格库。这对我来说效果很好。代码如下:
public void ExportTest(DataSet ds)
{
SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY");
ExcelFile ef = new ExcelFile();
var filename = DateTime.Now.ToString("yyyyMMdd") + "BSI_MEMBERAmendment" + ".xls";
foreach (DataTable dt in ds.Tables)
{
ExcelWorksheet ws = ef.Worksheets.Add(dt.TableName);
ws.InsertDataTable(dt,
new InsertDataTableOptions(0, 0)
{
ColumnHeaders = true,
StartRow = 0,
});
}
ef.Save(this.Response, filename);
我不得不停止使用 Gembox 库,因为我需要制作 5 张以上的 excel 文件。不幸的是,Gembox 不允许在免费平台上这样做。因此,我已切换到 NPOI。
现在我正在使用 NPOI 库,我将代码更改为:
public void WriteExcelWithNPOI(String extension, DataSet dataSet)
{
HSSFWorkbook workbook = new HSSFWorkbook(); ;
if (extension == "xls")
{
workbook = new HSSFWorkbook();
}
else
{
throw new Exception("This format is not supported");
}
foreach (DataTable dt in dataSet.Tables)
{
var sheet1 = workbook.CreateSheet(dt.TableName);
// How can i insert the data's from dataTable in this sheet
}
using (var exportData = new MemoryStream())
{
Response.Clear();
workbook.Write(exportData);
if (extension == "xls")
{
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "tpms_dict.xls"));
Response.BinaryWrite(exportData.GetBuffer());
}
Response.End();
}
}
我在使用 NPOI 库时遇到的问题是,导出的 excel 文件中的所有单元格都被格式化为文本。我想保留数据表中使用的格式。 寻求帮助。提前谢谢!!!
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-4 c#-4.0 export-to-excel