0

我一直在开发一个网页,允许用户根据几个过滤器/标准在数据库中搜索项目。其中一项要求是能够将此数据导出到电子表格 (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(); 

很简单,但我希望更好地控制电子表格的格式。经过一番搜索,我找到了这些文档:Wikipedia & MSDN,它们描述了一种被 excel 接受的 XML。我想了解有关此文档类型的更多信息,但似乎缺少文档。wiki 链接中没有关于格式的详细信息,MSDN 文章中也没有示例。我无法交叉引用这两者,因为它们似乎使用不同的版本(ss: workbookvs workbook)。哎呀,我什至不知道ss:,x:c:前缀代表什么。此外,MSDN 文章适用于 Office 2003,我似乎找不到更新的版本。

也许我一起查找错误的东西;有没有更现代的方式来实现我的目标?来源表示赞赏。


如何根据使用 awk 或 perl 的键交换多个列的值?

有没有一种简单的方法可以像这样交换表格文件中的列?

键将是第一列和第三列,但第二列应附加到第一列,第四列应附加到第三列。列之间的交换取决于第一个键(第 1 列)与第二个键(第 3 列)的存在。

A B C D    
E F A B
H I A G
J K L M 
N J Q K

所需的输出将是这样的:

A B C D    
A B E F
A G H I 
J K L M 
N J Q K
4

1 回答 1

0

杰夫,

我不确定这是您要查找的内容,但 EPPlus 可以为您生成 xlsx 工作表。我想为您提供一个示例,而不是仅仅说“这里使用这个”。

这是从此处获取的示例:EPPlus Source Listing

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");

希望这符合您的需要。

于 2013-02-05T20:55:54.613 回答