asp.net 導出CSV

前臺代碼

<asp:Button   runat="server" ID="btnDC" Text ="導出CSV" οnclick="btnDC_Click"/>

後臺代碼

  protected void btnDC_Click(object sender, EventArgs e)
        {
            DataTable dt = WorkOrderQuery.FindMyOrderList(358, 1, 100, "");//數據源
            try
            {
                StringWriter swCSV = new StringWriter();
                //列名
                swCSV.WriteLine("工單編號,工單標題,工單類型,創建時間,當前狀態,當前節點名稱,當前處理人 ");

                //遍歷datatable導出數據
                foreach (DataRow drTemp in dt.Rows)
                {
                    StringBuilder sbText = new StringBuilder();
                    sbText = AppendCSVFields(sbText, drTemp["WORK_ORDER_ID"].ToString());
                    sbText = AppendCSVFields(sbText, drTemp["work_order_title"].ToString());
                    sbText = AppendCSVFields(sbText, drTemp["type_name"].ToString());
                    sbText = AppendCSVFields(sbText, drTemp["create_time"].ToString());
                    sbText = AppendCSVFields(sbText, drTemp["status_name"].ToString());
                    sbText = AppendCSVFields(sbText, drTemp["point_name"].ToString());
                    sbText = AppendCSVFields(sbText, drTemp["username"].ToString());
                    //去掉尾部的逗號
                    sbText.Remove(sbText.Length - 1, 1);

                    //寫datatable的一行
                    swCSV.WriteLine(sbText.ToString());
                }
                //下載文件
                DownloadFile(Response, swCSV.GetStringBuilder(), "RuleDaySum.csv");

                swCSV.Close();
                Response.End();

            }
            catch (Exception ex)
            {
                 throw ex;
            }
        }

        /// <summary>
        /// csv添加逗號 用來區分列
        /// </summary>
        /// <param name="argFields">字段</param>
        /// <returns>添加後內容</returns>
        private StringBuilder AppendCSVFields(StringBuilder argSource, string argFields)
        {
            return argSource.Append(argFields.Replace(",", " ").Trim()).Append(",");
        }


        /// <summary>
        /// 彈出下載框
        /// </summary>
        /// <param name="argResp">彈出頁面</param>
        /// <param name="argFileStream">文件流</param>
        /// <param name="strFileName">文件名</param>
        public static void DownloadFile(HttpResponse argResp, StringBuilder argFileStream, string strFileName)
        {
            try
            {
                string strResHeader = "attachment; filename=" + Guid.NewGuid().ToString() + ".csv";
                if (!string.IsNullOrEmpty(strFileName))
                {
                    strResHeader = "inline; filename=" + strFileName;
                }
                argResp.AppendHeader("Content-Disposition", strResHeader);//attachment說明以附件下載,inline說明在線打開
                argResp.ContentType = "application/ms-excel";
                argResp.ContentEncoding = Encoding.GetEncoding("GB2312"); // Encoding.UTF8;//
                argResp.Write(argFileStream);

            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章