将DataTable导出CSV

/// <summary>
    /// CSVファイルダウンロード
    /// </summary>
    private void doDownload(int nType)
    {
        ComMethod.setMsg(0, "", lblMessage);

        try
        {
            string fileName = "";
            string sessionName = "";
            StringWriter fileWriter = new StringWriter();
            int rowCount, colCount;
            string[] arr;
            ArrayList ls = new ArrayList();
            DataTable dt = null;

            /*
             * File Download
             */

            if (nType == 1)
            {
                sessionName = "OrderDetaiInfo";
                fileName = "OrderInfoDetails" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";

                // セッションからデータを取得
                if (null != Session[sessionName])
                {
                    dt = (DataTable)Session[sessionName];
                }
            }
            else
            {
                sessionName = "OrderInfo";
                fileName = "OrderInfo" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv";

                // セッションからデータを取得
                if (null != Session[sessionName])
                {
                    dt = (DataTable)Session[sessionName];
                }
            }

            if (null == dt)
            {
                ComMethod.setMsg(1, "ダウンロードデータ取得処理に異常が発生しました。", lblMessage);
                return;
            }

            rowCount = dt.Rows.Count + 1;
            colCount = dt.Columns.Count;
            arr = new string[colCount];
            fileWriter = new StringWriter();

            ls = new ArrayList();

            for (int i = 0; i < rowCount; i++)
            {
                if (i == 0)
                {
                    for (int j = 0; j < colCount; j++)
                    {
                        arr[j] = ComMethod.ObjToString(dt.Columns[j].ColumnName);
                    }

                    fileWriter.WriteLine(String.Join(",", arr));

                }
                else if (i > 0)
                {
                    for (int j = 0; j < colCount; j++)
                    {
                        arr[j] = "/"" + ComMethod.ObjToString(dt.Rows[i - 1][j]).Replace("/n", "") + "/"";

                    }
                    fileWriter.WriteLine(String.Join(",", arr));
                }
            }

            Response.ClearContent();
            Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
            Response.ContentType = "application/excel";

            Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");

            Response.Write(fileWriter.ToString());
            Response.End();

            fileWriter.Flush();
            fileWriter.Close();
        }
        catch (Exception ex)
        {
            ComMethod.setMsg(1,  "CSVファイルダウンロード処理に異常が発生しました。(" + ex.Message.ToString() + ")", lblMessage);
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值