none
关于datagirdview转化成Excel的问题 RRS feed

  • 问题

  •  private void btnLogReport_Click(object sender, EventArgs e)
            {
                //建立Excel对象
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                excel.Application.Workbooks.Add(true);
                //生成字段名称
                for (int i = 0; i < dataGridView_LogReport.ColumnCount; i++)
                {
                    excel.Cells[1, i + 1] = dataGridView_LogReport.Columns[i].HeaderText;
                }
                //填充数据
                for (int i = 0; i < dataGridView_LogReport.RowCount - 1; i++)
                {
                    for (int j = 0; j < dataGridView_LogReport.ColumnCount; j++)
                    {
                        if (dataGridView_LogReport[j, i].Value == typeof(string))
                        {
                            excel.Cells[i + 2, j + 1] = "" + dataGridView_LogReport[i, j].Value.ToString();
                        }
                        else
                        {
                            excel.Cells[i + 2, j + 1] = dataGridView_LogReport[j, i].Value.ToString();
                        }
                    }
                }
                excel.Visible = true;
            }
    我按照上面的代码可以将 datagirdview 中的内容写到Excel里面,但是有个缺点就是datagirdview表中有些数据太长了,转到Excel中的时候就变成了 ###### ,要自己手动调整一下Excel中的表格宽度才能显示 ##### 中的内容,那我有什么办法才能使得不用手动调整宽度,让程序自己调整啊??
    小弟新生,请详细!!

    2012年3月15日 2:19

答案

全部回复

  • Hi 星空雏菊,

      你的这个问题可以通过更改单元格属性为文字,或者使用下列代码去更改为文字型单元格:

      mySheet.Cells(1,9).NumberFormatLocal = "@"
    Excel.Range r = mySheet.get_Range(mySheet.Cells[0,0], mySheet.Cells[dataGridView_LogReport.RowCount,dataGridView_LogReport.ColumnCount]);
    r.NumberFormat = "@";
    r.NumberForma = "0.00_ "
      但是这些操作都需要引入com的dll,可以到下面地址去下载:

    http://www.microsoft.com/downloads/details.aspx?FamilyId=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD&displaylang=en
    从上面的网址单独下载针对Office2003的程序集,安装后,程序就可以操作Excel了,因为这个程序集可以放在项目安装程序的先决条件检查中附带安装。不论是否安装或者安装的Office版本是否正确,都可以让自己的程序正常运行。

      还有一个办法就是用Stream写入excel文件里。


    orichisonic http://blog.csdn.net/orichisonic If a post answers your question, please click "Mark As Answer" on that post and "Mark as Helpful".


    2012年3月15日 4:56
  • 使用 Range. AutoFit() 方法即可。

    2012年3月16日 3:12
  • 大侠,你厉害!!!牛
    2012年3月19日 1:42