我有一个班级
public class Data
{
public string name{ get; set; }
public int age { get; set; }
}
我有一个接受数据数组的方法,我需要从即将推出的数据中生成csv和pdf。
public void ExportToCSV(Data[] data)
{
// write code to generate csv
}
public void ExportToPdf(Data[] data)
{
// write code to generate pdf
}
请建议。
我像这样生成了Excel,并且想知道有类似的代码生成csv和pdf。需要做些什么改变?
public void ExportToExcel(Data[] data)
{
var grid = new GridView();
grid.DataSource = data;
grid.DataBind();
Response.ClearContent();
Response.AddHeader("Content-type", "application/vnd.ms-excel");
Response.AddHeader("content-disposition", "attachment;filename=export.xls");
Response.ContentType = "application/excel";
var swr = new StringWriter();
var tw = new HtmlTextWriter(swr);
grid.RenderControl(tw);
Response.Write(swr.ToString());
Response.Flush();
Response.End();
tw.Close();
swr.Close();
}
答案 0 :(得分:1)
使用LINQ:
string csv = data.ToLidt()
.Select(i => string.Format("{0}, {1}", i.name, i.age.ToString())
.Aggregate((a, b) => string.Format("{0}\r\n{1}"));
更新
从技术上讲,您的Excel生成代码不会创建Excel。你只是使用GridView
渲染控制类,我怀疑它是否会创建Excel。
但是要创建PDF和任何其他文档,您的路径是一样的:
Content-Disposition
标题,以便浏览器下载该文件,而不是打开它。答案 1 :(得分:1)
试
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Test\yourFile.csv"))
{
file.WriteLine("name,age");
foreach(var item in data)
{
file.WriteLine(String.Format("{0},{1}", item.name, item.age));
}
}