日期:2014-05-17  浏览次数:20523 次

导出Excel修改 保存时 可能含有与文本文件(制表符分割)分割不兼容问题 啥情况?
C# code

 HttpResponse resp;
            resp = Page.Response;
            resp.Clear();
            resp.Buffer = true;
            resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            resp.ContentType = "application/ms-excel";//比较重要
            resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
           
            string colHeaders = "", ls_item = "";
            int i = 0;

            //定义表对象与行对像,同时用DataSet对其值进行初始化 
            DataTable[] dtlist = dts;

            foreach (DataTable dt in dtlist)
            {
                colHeaders = "";
                resp.Write("\n");
                DataRow[] myRow = dt.Select("");
                // typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件 
                if (typeid == "1")
                {
                    //取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符 
                    for (i = 0; i < dt.Columns.Count - 1; i++)
                        colHeaders += dt.Columns[i].Caption.ToString() + "\t";
                    colHeaders += dt.Columns[i].Caption.ToString() + "\n";
                      
                    //向HTTP输出流中写入取得的数据信息 
                    resp.Write(colHeaders);
                    //逐行处理数据 
                    foreach (DataRow row in myRow)
                    {
                        //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n 
                        for (i = 0; i < row.ItemArray.Length - 1; i++)

                            ls_item += row[i].ToString() + "\t";
                        ls_item += row[i].ToString() + "\n";
                          

                        //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据 
                        resp.Write(ls_item);
                        ls_item = "";
                    }
                }
                else
                {
                    if (typeid == "2")
                    {
                        //从DataSet中直接导出XML数据并且写到HTTP输出流中 
                        // resp.Write(ds.GetXml());启用这个需要传DataSet进来
                    }
                }

            }

            for (int j = 0; j < 10000; j++)
            {
                resp.Write("\n");
            }

            //写缓冲区中的数据到HTTP头文件中 
            resp.End();



------解决方案--------------------
代码好像没什么问题,
我没明白你什么意思,还是帮你顶吧
------解决方案--------------------
是这样的吧
程序生成的EXCEL跟直接用excel新建的内容不一样,用记事本打开就知道了。
他会提示一下,忽略就行了啊。
------解决方案--------------------
你好,楼主!小弟遇到同样的问题,请问楼主的这个问题是怎么解决的,纠结中~~~~
在此先谢过楼主了...
------解决方案--------------------
我也是这样,不过点保存后文件还是实际上已经保存了,只要忽略掉这个提示就可以了!程序生成的excel默认是txt..