我正在使用c#将我的HTML报告导出到excel中。我正在编写我的所有HTML响应(Response.Write()
)以及css并下载excel并且其工作正常。现在我需要将其HTML部分分成单独的表格。
我该怎么做?我有办法通过EPPlus吗?
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/ms-excel";
Response.AddHeader("Content-Disposition", "attachment;filename=EntryPlanningReport.xls");
Response.Write(@"<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">");
Response.Write("<head><style type='text/css'>" + strBuilder.ToString() + "</style></head>");
Response.Write("<div id='contentTitle'> Entry Planning Report </div><br />");
Response.Write(ReportSelectionHtml + "<br />");
Response.End();
上面的代码在单页工作正常,因为你可以看到我正在注入我的CSS文件文本。 对于多张纸我转换到EPPlus
答案 0 :(得分:2)
EPPlus是创建Excel文件的好方法,但存在一些限制。
正如您所注意到的,您不能简单地将单元格的值设置为某些HTML代码,并期望在生成的Excel文件中接收格式化文本。 EPPlus支持富文本单元格值,但必须使用方法调用来构造这些值,以打开和关闭文本值的不同部分的格式。应用于整个单元格的格式将单独处理。
我写了一些实用程序,用于将一些非常基本HTML转换为EPPlus富文本对象,你可以在这里找到它,它可能会有所帮助:
https://github.com/JanKallman/EPPlus/issues/154
也就是说,根据您上面的评论,您似乎试图在单个Excel单元格中嵌入整个表。这是不可能的。如果您无法在Excel中执行某些操作,则无法在EPPlus中执行此操作。如果要在Excel中创建表,则工作表的每个单元格应对应于表中的单元格。例如:
ws2.Cells[1, 1].Value = "Brach Name";
ws2.Cells[1, 2].Value = "data";
在单元格上设置颜色和其他样式的方式与设置值的方式类似,EPPlus发行版中有许多示例供您参考。