当前位置:编程学习 > C#/ASP.NET >>

c#导出excel时,怎么会出现没有到换行时就换行了!

业务员每天发短信,并存放在数据库中,想导出每个业务员从1号到31号的所发的短信内容,第一列显示编号,第二列为业务员名,后面的每列分别显示1-31号的短信内容。每一个业务员占一行,但是导出后有部分业务员占了好几行(比如到了20几号的短信后就跳到下一行显示了)。如下图
  
本来在显示业务员名这一列显示了短信内容。

所用的导出源码如下:请高手帮忙解决1
protected void btnExport_Click(object sender, EventArgs e)
    {
        string ConnectStr = ConfigurationManager.AppSettings["LocalSqlServer"];
        SqlConnection SqlConn = new SqlConnection(ConnectStr);

        string d = "e:\\sms\\业务员短信" + DateTime.Now.ToString("yyyyMMddhhmm") + ".xls";

        StreamWriter w = new StreamWriter(d, true, Encoding.Default);

        string star = txt_star.Text + " 16:00";
        string end = txt_end.Text + " 16:00";


        try
        {
            SqlConn.Open();
        }
        catch
        {
            Response.Write("<script>alert('数据库连接错误!');</script>");
            return;
        }

        try
        {
            SqlCommand SqlCmd = SqlConn.CreateCommand();
            SqlCmd.CommandText = "select distinct UserID,RealName , 一 ,二, 三,四, 五, 六, 七, 八,九, 十, 十一, 十二, 十三, 十四,十五, 十六, 十七, 十八, 十九,二十, 二一,二二, 二三, 二四, 二五,二六, 二七, 二八,二九, 三十, 三一,";

            // sql = "select distinct UserID,RealName , 一 ,二, 三,四, 五, 六, 七, 八,九, 十, 十一, 十二, 十三, 十四,十五, 十六, 十七, 十八, 十九,二十, 二一,二二, 二三, 二四, 二五,二六, 二七, 二八,二九, 三十, 三一,";
            SqlCmd.CommandText += " GoalTimes as GoalTimes,sum(sjGoalTimes) as sjGoalTimes,qfzs,cqday from Quew_User  where 1=1  ";
            SqlCmd.CommandText += "   and  InceptTime >='" + star + "' and InceptTime<='" + end + "'";
            SqlCmd.CommandText += sqlWhere;

            SqlCmd.CommandText += "  group by UserID,RealName ,一 ,二, 三,四, 五, 六, 七,";
            SqlCmd.CommandText += "   八,九, 十, 十一, 十二, 十三, 十四,十五, 十六, 十七, 十八, 十九,二十, 二一, 二二, 二三, 二四, 二五,二六, 二七, 二八,二九, 三十, 三一,qfzs,cqday,GoalTimes  order by  RealName ";


            DataTable table = BindData2(SqlCmd.CommandText);

            SqlDataReader Reader = SqlCmd.ExecuteReader();
            for (int i = 0; i < Reader.FieldCount; ++i)
            {
                w.Write(Reader.GetName(i));
                w.Write('\t');
            }
            w.Write("\r\n");

            //object[] values = new object[Reader.FieldCount];
            //while (Reader.Read())
            //{
            //    Reader.GetValues(values);
            //    for (int i = 0; i < values.Length; ++i)
            //    {
            //        //w.Write("'");//避免打开excel时部分字符转换为数字(科学计数法)
            //        w.Write(values[i].ToString());
            //        w.Write('\t');
            //    }
            //    w.Write("\r\n");
            //}

            foreach (DataRow row in table.Rows)
            {

                for (int i = 0; i < table.Columns.Count; i++)
                {
                    //w.Write("'");//避免打开excel时部分字符转换为数字(科学计数法)
                    w.Write(row[i].ToString());
                    w.Write('\t');
                }
                w.Write("\r\n");

            }


            w.Flush();
            w.Close();
            Reader.Close();
            SqlConn.Close();
        }
        catch
        {
            Response.Write("<script>alert('数据库连接错误!');</script>");
            w.Close();

            SqlConn.Close();
            return;
        }
    } --------------------编程问答--------------------
你的图挂了 --------------------编程问答--------------------
引用 1 楼 vip__888 的回复:
你的图挂了

有意思么?
图片挂了 --------------------编程问答-------------------- 库中有看不到的换行,输出的时候过滤掉"\r" --------------------编程问答--------------------
引用 3 楼 liuh6 的回复:
库中有看不到的换行,输出的时候过滤掉"\r"

请问如何过滤?另外,因为是手机文本短信,"\r"短信中应该输入不进去的啊! --------------------编程问答--------------------
引用 1 楼 vip__888 的回复:
你的图挂了


我不知道csdn如何贴图,这只能输入连接地址,若没显示请单击右键--》显示图像
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,