C# 网络<;表>;出类拔萃
我一直在开发一个网页,允许用户根据几个过滤器/标准在数据库中搜索项目。要求之一是能够将这些数据导出到电子表格(excel)中。到目前为止,我已经使用CSV文件创建了一个非常简单的方法C# 网络<;表>;出类拔萃,c#,xml,excel,C#,Xml,Excel,我一直在开发一个网页,允许用户根据几个过滤器/标准在数据库中搜索项目。要求之一是能够将这些数据导出到电子表格(excel)中。到目前为止,我已经使用CSV文件创建了一个非常简单的方法 //get model... StringWriter sw = new StringWriter(); //First line for column names sw.WriteLine("col1,col2,col3"); foreach (DataType i in model) { sw.Wr
//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();
很简单,但我希望对电子表格的格式有更多的控制。经过一些搜索,我找到了以下文档:&它们描述了excel接受的一种XML类型。我想进一步了解这种文档类型,但似乎缺少文档。wiki链接中没有关于格式的详细信息,MSDN文章中也没有示例。我无法交叉引用两者,因为它们似乎使用不同的版本(ss:workbook
vsworkbook
)。见鬼,我甚至不知道ss:
、x:
和c:
前缀代表什么。此外,MSDN文章是针对Office 2003的,我似乎找不到更新的版本
也许我一起查错了东西;有没有更现代的方法来实现我的目标?感谢消息来源。杰夫
我不确定这是否是您想要的,但EPPlus可以为您生成xlsx工作表。我想给你提供一个样本,而不是仅仅说“这里用这个”
以下是从这里采集的样本:
希望这是您所需要的。因为您使用的是asp,所以您可以通过COM调用Excel并构建一个真正的电子表格,而不是与csv或html混在一起。这不会很好,但这将是最直接的方法。@Marc-B COM自动化在服务器上不受支持。@Jeff尝试一下CodePlex的EPPlus,它是100%.NET。它可以为您生成XLSX文件。@Chris似乎很有希望。我会查出来的。。。我的公司对允许我们使用的库/框架有严格的政策。当我研究EPPlus时,您对使用我的web服务器生成XML有什么想法吗?
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");