c#操作excel ,txtbox 多行写入EXCEL,回车符在EXCEL中显示一个像音乐符的东西,如何解决

解决方案 »

  1.   

    告诉楼主个好消息,我试了,没问题。
    关键是你要写文本的时候cell属性用FormulaR1C1
    我在单元格B1写数据时用的多行文本框 ,输入1回车再输入b
    结果在Excel 显示两行数据,并自动调整为两行行高
    测试
    输入1回车再输入b回车再输入x
    结果在Excel 显示3行数据,并自动调整为3行行高
    /// <summary>
    /// 对指定单元格或指定范围内的单元格带区填充文本。行索引为从1开始的数字,最大65536,列索引为A~Z、AA~AZ、BA~BZ...HA~HZ、IA~IV的字母及组合,也可以是1-65536数字。
    /// 作者:长江支流 [email protected]
    /// </summary>
    /// <param name="p_rowIndex">单元格行索引,从1开始,最大65536。</param>
    /// <param name="p_colIndex">单元格列索引,从1开始,列索引为A~Z、AA~AZ、BA~BZ...HA~HZ、IA~IV的字母及组合,也可以是1-65536数字。</param>
    /// <param name="p_text">指定要填充的文本</param>
    public void SetCellText(int p_rowIndex,string p_colIndex,string p_text)
    {
    Excel.Range range;
    range = GetRange(p_rowIndex,p_colIndex);
    range.Cells.FormulaR1C1 = p_text;
    range = null;
    }
      

  2.   

    range = GetRange(p_rowIndex,p_colIndex);GetRange是什么?
      

  3.   

    不行,还在存在问题,我是打开EXCEL模板后写入数据
      

  4.   

    TO: zwfhome1(任由风吹) 
    GetRange返回指定行列的Excel.Range,相信楼主这个会的。
    我把Excel二次开发封装了,如果需要,给我
    mail:[email protected]
      

  5.   

    哈哈,才发现是周兄,我的打印用的就是你的MIS金质打印通,谢谢兄台的好程序!!!
      

  6.   

    GetRange返回指定行列的Excel.Range,就是你在Excel中选中的范围,
      

  7.   

    哈哈,看来flygoldfish(长江支流) 还小有名气啊,我也用他的MIS金质打印通,学了不少东西!
    真心希望周兄搞出更多开源的东东来。希望我哪天有本事了,也拿出来和大家共享!
      

  8.   

    有flygoldfish(长江支流)出手解决EXCEL问题,小菜一碟了,我也用他的MIS金质打印通
      

  9.   

    哈哈,楼主和楼上几位兄弟过奖了,我会更加努力 ,现在MIS金质打印通的XML解析器已基本写好,可以用FrontPage、VS2003IDE设计报表。
    把这段时间做项目确实太忙了些,估计下月初可以轻松了,做完了后抽空弄一弄出个V2.5版。楼主,你发的邮件收到了,我在我本机上试你的代码没问题,我在我的示例代码中加了一个
    button,调用你发的importexe,真的可以换行private void button2_Click(object sender, System.EventArgs e)
    {
    importexe();
    }private void importexe()
    {
    //创建Application对象 
    Excel.Application xApp=new Excel.ApplicationClass(); 
    xApp.Visible=true; 
    Excel.Workbook xBook=xApp.Workbooks.Add(System.Reflection.Missing.Value);//新建文件的代码 
    Excel.Worksheet xSheet=(Excel.Worksheet)xBook.Sheets[1]; 
    Excel.Range rng3=xSheet.get_Range("C6",System.Reflection.Missing.Value);  rng3.Cells.FormulaR1C1 = txtCellText.Text;   
    rng3.Interior.ColorIndex=6; //设置Range的背景色 
    }邮件已回,请查收一下MIS金质打印通Excel专版,它将随V2.5版一起发布。
      

  10.   

    以过和楼主几次Mail的反应,我又试了好多次,发觉应是Excel本身的问题了,因为在其它几种OS + Excel中是可以的我试了以下方法,可以,楼主将上面代码中的rng3.Cells.FormulaR1C1 = txtCellText.Text;改成rng3.Cells.FormulaR1C1 = txtCellText.Text.Replace("\r\n","\n");  再试一次
    如果在你本机上真不行,楼主再建立一个VB.NET,试一试,
    因为Excel真正是用VBA编写的,它会转为
    rng3.Cells.FormulaR1C1.FormulaR1C1 = "1" & Chr(10) & "b" & Chr(10) & "x"