• 由DataSet导出生成excel的几种方法


    1、当dataset中包含了html等特殊字符用这个处理

    public void CreateExcel2(DataSet ds)
    {
    //创建一个excel application
    Excel.Application xls_exp=null;
    int rowindex=1;
    int colindex=0;

    //创建一个workbook,一个worksheet
    Excel._Workbook xls_book=null;
    Excel._Worksheet xls_sheet=null;
    try
    {
    xls_exp = new Excel.ApplicationClass();
    xls_book = xls_exp.Workbooks.Add(true);
    xls_sheet = (Excel._Worksheet)xls_book.ActiveSheet;
    //取得数据
    //DataTable aa=GetData();
    //将所得到的表的列名,赋值给单元格
    foreach (DataColumn col in ds.Tables[0].Columns)
    {
    colindex++;

    xls_exp.Cells[1, colindex] = col.ColumnName;
    //水平对齐
    xls_sheet.get_Range(xls_exp.Cells[1, colindex], xls_exp.Cells[1, colindex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;
    //垂直对齐
    xls_sheet.get_Range(xls_exp.Cells[1, colindex], xls_exp.Cells[1, colindex]).VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;

    //行高、列宽自适应
    //xls_sheet.Cells.Rows.AutoFill();
    //xls_sheet.Cells.Columns.AutoFill();
    }
    //同样方法处理数据
    foreach (DataRow row in ds.Tables[0].Rows)
    {
    rowindex++;
    colindex = 0;

    foreach (DataColumn col in ds.Tables[0].Columns)
    {
    colindex++;
    switch (row[col.ColumnName].GetType().ToString())
    {
    //字符
    case ("System.String"):

    //数字格式设置为文本
    xls_sheet.get_Range(xls_exp.Cells[rowindex, colindex], xls_exp.Cells[rowindex, colindex]).NumberFormatLocal = "@";

    //水平对齐
    xls_sheet.get_Range(xls_exp.Cells[rowindex, colindex], xls_exp.Cells[rowindex, colindex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;
    //垂直对齐
    xls_sheet.get_Range(xls_exp.Cells[rowindex, colindex], xls_exp.Cells[rowindex, colindex]).VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
    break;
    //日期
    case ("System.DateTime"):
    //数字格式设置为yyyy-mm-dd hh:mm:ss日期
    xls_sheet.get_Range(xls_exp.Cells[rowindex, colindex], xls_exp.Cells[rowindex, colindex]).NumberFormatLocal = "YYYY-MM-DD HH:MM:SS";
    break;
    }
    //给cell赋值
    xls_exp.Cells[rowindex, colindex] = row[col.ColumnName];

    }
    }
    //不可见,即后台处理
    xls_exp.Visible = true;
    }
    catch (Exception err)
    {
    //MessageBox.show(err.Message);
    Page.ClientScript.RegisterStartupScript(this.GetType(), "mes", "alert('"+err.Message+"');", true);
    }
    }

    2、

    public void CreateExcel(DataSet ds)
    {
    HttpResponse resp = null;
    resp = Page.Response;

    resp.Clear();
    resp.Buffer = true;

    resp.Charset = "GB2312";

    resp.ContentType = "application/ms-excel";
    resp.AppendHeader("Content-Disposition", "attachment;filename=BleGgoods.xls" );

    resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

    this.EnableViewState = false;

    string colHeaders = "", ls_item = "";


    //定义表对象与行对象,同时用DataSet对其值进行初始化
    DataTable dt = ds.Tables[0];
    DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
    int i = 0;
    int cl = dt.Columns.Count;


    //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符
    for (i = 0; i < cl; i++)
    {
    if (i == (cl - 1))//最后一列,加\n
    {
    colHeaders += dt.Columns[i].Caption.ToString() + "\n";
    }
    else
    {
    colHeaders += dt.Columns[i].Caption.ToString() + "\t";
    }

    }
    resp.Write(colHeaders);
    //向HTTP输出流中写入取得的数据信息

    //逐行处理数据
    foreach (DataRow row in myRow)
    {
    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据
    for (i = 0; i < cl; i++)
    {
    if (i == (cl - 1))//最后一列,加\n
    {
    ls_item += "'"+row[i].ToString() + "\n";
    }
    else
    {
    ls_item += "'"+row[i].ToString() + "\t";
    }

    }
    resp.Write(ls_item);
    ls_item = "";

    }

    resp.Flush();
    resp.End();
    }

    3、

    public void CreateCsv(DataSet ds)
    {
    string output=string.Empty;
    ArrayList myOutput = new ArrayList();
    if (ds.Tables[0].Rows.Count > 0)
    {
    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
    {
    output = "\t" + ds.Tables[0].Rows[i][0].ToString() + "," + ds.Tables[0].Rows[i][1].ToString()+",";
    output += ds.Tables[0].Rows[i][2].ToString() + "," + ds.Tables[0].Rows[i][3].ToString()+",";
    output += ds.Tables[0].Rows[i][4].ToString() + "," + ds.Tables[0].Rows[i][5].ToString() + ",";
    output += ds.Tables[0].Rows[i][6].ToString() + "," + ds.Tables[0].Rows[i][7].ToString() + ",";
    output += ds.Tables[0].Rows[i][8].ToString();

    myOutput.Add(output);
    }


    Response.Clear();
    Response.ClearHeaders();
    Response.Buffer = true;
    Response.Charset = "GB2312";

    Response.AppendHeader("Content-Disposition", "attachment;filename=BleGoods.csv");

    Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文

    Response.ContentType = "text/csv";//设置输出文件类型为text文件。
    this.EnableViewState = false;
    System.Collections.IEnumerator myEnumerator = myOutput.GetEnumerator();
    while (myEnumerator.MoveNext())
    Response.Write(myEnumerator.Current.ToString());
    Response.Flush();
    Response.End();
    }

    }

  • 相关阅读:
    【EF6学习笔记】(四)弹性连接及命令拦截调试
    【EF6学习笔记】(三)排序、过滤查询及分页
    【EF6学习笔记】(二)操练 CRUD 增删改查
    【EF6学习笔记】(一)Code First 方式生成数据库及初始化数据库实际操作
    SQL Server表分区
    【工具类】
    【C#加深理解系列】(二)序列化
    【ASP.NET Core分布式项目实战】(三)整理IdentityServer4 MVC授权、Consent功能实现
    【转载】IdentityServer4 使用OpenID Connect添加用户身份验证
    【ASP.NET Core分布式项目实战】(二)oauth2 + oidc 实现 server部分
  • 原文地址:https://www.cnblogs.com/jameshappy/p/2822718.html
Copyright © 2020-2023  润新知