2012-04-20 94 views
-1

我通常使用Response.Write将我的报告导出到Excel文件。ASP.Net在Excel中创建多个工作表Response.Write

E.g

Response.Clear(); 
Response.Buffer = true; 
Response.AddHeader("content-disposition", "attachment; filename=MyFile.xls"); 
Response.ContentType = "application/vnd.ms-excel"; 
Response.Write("<meta http-equiv=Content-Type content=text/html;charset=UTF-8>"); 
Response.Write("<table>"); 
Response.Write("<tr>"); 
Response.Write("<td>"); 
Response.Write("Hello"); 
Response.Write("</td>"); 
Response.Write("</tr>"); 
Response.Write("</table>"); 
Response.End(); 

现在我要导出一个excel多个表格文件。 我该如何做到这一点?

+1

那如何代码涉及到创建一个Excel文件? – Widor 2012-04-20 10:23:59

+0

我在用户列表的网页上有一个表格。每个用户都有他/她自己的档案(姓名,年龄等)。所以我想为我的表中显示的用户导出配置文件。所以这意味着如果我有用户(A,B,C),那么在我导出的Excel文件中,我将会有工作表(A,B,C),并且每个工作表都包含特定用户的配置文件。 – 2012-04-20 11:03:32

+0

你应该写这个问题,你的代码不会导出为ex​​cel,它会写HTML表并在请求中发送错误的内容类型。 – 2012-04-20 11:28:24

回答

2

从技术上讲,这不会导出为ex​​cel,但是您发送错误标题的html来欺骗浏览器使用excel打开此内容。

更好地使用NPOI(xls)或/和EPPlus(xlsx)并完全控制您的excel导出,然后您可以创建新的工作表和更多。

更新:在这个苏答案你可以看到的例子,返回从数据表中创建Excel文件ashx的处理程序:

C# create/modify/read .xlsx files

+1

好的,谢谢。我只希望这个库不会让我的网络服务器变慢,因为我已经尝试了微软的API库(Microsoft.Office.Interop.Excel),我听到很多人批评它,说它会减慢Web服务器的速度。 – 2012-04-20 11:46:53

+0

他们是对的,Interop在服务器上的表现甚至不被MS支持,这些都是纯粹的c#库,而且速度相当快。 – 2012-04-20 11:53:17

+0

好的。我喜欢你的第一个解释(“欺骗浏览器”)很清楚。非常感谢。 – 2012-04-20 11:59:46

相关问题