惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
Microsoft Security Blog
Microsoft Security Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
博客园_首页
T
Tailwind CSS Blog
aimingoo的专栏
aimingoo的专栏
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
P
Proofpoint News Feed
博客园 - 司徒正美
有赞技术团队
有赞技术团队
Engineering at Meta
Engineering at Meta
Last Week in AI
Last Week in AI
MongoDB | Blog
MongoDB | Blog

博客园 - 星答

win7 小版本号16384( 最终测试版) 两个参数互换(不用第三个变量) c#实现九九乘法表 Excel导入导出 24券 域名 .net 6年之感想 服务器配置之DNS .net 杂记 Powerdesigner反向工程 常用时间函数 无任何网络提供程序接受指定的网络路径 虚拟机拖拽 sql表的所有者 奥运门票有了 阿泰斯特乘火箭 sql脚本导入Powerdesigner C# 上传文件 - 星答 - 博客园 'f_split' 不是可以识别的 函数名 加载App_Licenses出错
asp.net 导出CSV
星答 · 2011-03-17 · via 博客园 - 星答

前台代码

<asp:Button   runat="server" ID="btnDC" Text ="导出CSV" onclick="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;
            }
        }