这是以前较为常用的一种方法。遍历数据集合,构造一个table或者构造csv结构,然后输出到客户端(或者先生成后下载)。
以DataTable为例:
public void CreateExcel(DataTable dt, string FileName)
{
HttpResponse resp;
resp = Page.Response;
resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
resp.ContentType = "application/vnd.ms-excel";
string colHeaders = "", ls_item = "";
//可以类似dt.Select("id>10")之形式达到数据筛选目的
DataRow[] myRow = dt.Select();
int i = 0;
int cl = dt.Columns.Count;
//各列之间以\t分割,最后一个列标题后加回车符
for (i = 0; i < cl; i++)
{
//最后一列,加\n
if (i == (cl - 1))
{
colHeaders += dt.Columns[i].Caption.ToString() + "\n";
}
else
{
colHeaders += dt.Columns[i].Caption.ToString() + "\t";
}
}
//向HTTP输出流中写入取得的数据信息
resp.Write(colHeaders);
//逐行处理数据
foreach (DataRow row in myRow)
{
//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
for (i = 0; i < cl; i++)
{
//最后一列,加\n
if (i == (cl - 1))
{
ls_item += row[i].ToString() + "\n";
}
else
{
ls_item += row[i].ToString() + "\t";
}
}
resp.Write(ls_item);
ls_item = "";
}
resp.End();
}
protected void Button1_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("编号");
dt.Columns.Add("姓名");
dt.Columns.Add("性别");
dt.Rows.Add("001", "张三", "男");
dt.Rows.Add("002", "李四", "女");
CreateExcel(dt, "class.xls");
}
其它数据集合类似,如DataView、List等,我们只需要创建行和列就可以了。
还可以使用文件流生成文件然后下载:
public void CreateExcelFileStream(DataTable dt, string FileName)
{
//生成文件在服务器端
string name = Server.MapPath(FileName);
FileStream fs = new FileStream(name, FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("gb2312"));
sw.WriteLine("编号,姓名,年龄");
foreach (DataRow dr in dt.Rows)
{
sw.WriteLine(dr[0].ToString() + "," + dr[1].ToString() + "," + dr[2].ToString());
}
sw.Close();
//下载文件
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(FileName));
Response.ContentType = "application/vnd.ms-excel";
Response.WriteFile(name);
Response.End();
}
本文参考:http://blog.csdn.net/jilm168/archive/2007/11/06/1869118.aspx
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论