2

我正在使用 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

4

1 回答 1

3

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 发行版中有许多示例可供您参考。

于 2013-04-03T06:37:33.397 回答