Web <table> to Excel

本文关键字:to Excel gt table Web lt | 更新日期: 2023-09-27 17:58:04

我一直在开发一个网页,允许用户根据几个过滤器/标准在数据库中搜索项目。其中一个要求是能够将这些数据导出到电子表格(excel)中。到目前为止,我已经使用CSV文件创建了一个非常简单的方法。

//get model...
StringWriter sw = new StringWriter();
//First line for column names
sw.WriteLine("col1,col2,col3");
foreach (DataType i in model)
{
    sw.WriteLine(string.Format({0},{1},{2},
                                i.data1,
                                i.data2,
                                i.data3));
}
Response.AddHeader("Content-Disposition", "attachment; filename=test.csv");
Response.ContentType = "text/csv";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
Response.Write(sw);
Response.End(); 

很简单,但我希望对电子表格的格式有更多的控制。经过一番搜索,我找到了以下文档:维基百科;MSDN描述了excel所接受的一种XML类型。我想了解更多关于这种文档类型的信息,但文档似乎缺乏。wiki链接中没有关于格式的详细信息,MSDN文章中也没有示例。我不能交叉引用这两者,因为它们似乎使用了不同的版本(ss: workbookworkbook)。见鬼,我甚至找不出ss:x:c:前缀代表什么。此外,MSDN的文章是针对Office2003的,我似乎找不到更新的版本。

也许我一起查错了东西;有没有更现代的方式来实现我的目标?感谢消息来源。

Web <table> to Excel

Jeff,

我不确定这是你想要的,但EPPlus可以为你生成一个xlsx工作表。我想给你一个样品,而不是说"这里用这个"。

这里有一个示例:EPPlus源代码清单

ExcelPackage pkg = new ExcelPackage();
var ws = pck.Workbook.Worksheets.Add("Sheet1");
//First line for column names
ws.Cells["A1"] = "col1";
ws.Cells["A2"] = "col2";
ws.Cells["A3"] = "col3";
int row = 2;
foreach (DataType i in model)
{
    //I don't know you data model, I'm guessing
    //row, col
    ws.Cells[row, 1] = i.data1);
    ws.Cells[row, 2] = i.data2);
    ws.Cells[row, 3] = i.data3);
    row++;
}
pck.SaveAs(Response.OutputStream);
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;  filename=YouNameGoesHere.xlsx");

希望这符合你的需求。