我要把datagrid中显示出来的数据,按照一定的格式导入到word中,自己画出表格,并把数据放在表格里,请问应该怎么弄,能否给个例子.

解决方案 »

  1.   

    #region 导出数据到word文档核心代码,你自己略加修改
    private void btnDownload_Click(object sender, System.EventArgs e)
    {

    //指定文件存放路径

    string FILE_NAME = @c:\aaa.doc; DataTable dt = new DataTable();
    DataSet ds =new DataSet();

    dt = ds.Tables[0];
    //判断文件是否存在
    if (File.Exists(FILE_NAME)) 
    {

    if(MessageBox.Show("该文件已经存在,是否覆盖?","提示",MessageBoxButtons.YesNo)==DialogResult.No)
    {
    return;
    }
    try
    {
    File.Delete(FILE_NAME);
    StreamWriter srnew = File.CreateText(FILE_NAME);
    //向文件写入标题
    for(int a =0;a<ds.Tables[0].Columns.Count;a++)
    {
    srnew.Write(ds.Tables[0].Columns[a].ToString()+" ");
    if(ds.Tables[0].Columns[a].ToString()==ds.Tables[0].Columns[ds.Tables[0].Columns.Count-1].ToString())
    {
    srnew.WriteLine();
    }
    }
    //向文件写入内容
    for(int i =0 ;i<dt.Rows.Count;i++)
    {
    for(int j=0;j<dt.Columns.Count;j++)
    {
    srnew.Write(dt.Rows[i][j].ToString()+" ");

    }
    //判断是否为行的尾部
    if(dt.Rows[i][dt.Columns.Count-1]==dt.Rows[i][dt.Columns.Count-1])
    {
    srnew.WriteLine();
    }
    }
    //关闭当前的StreamWriter和基础流
    srnew.Close();
    MessageBox.Show("文件已覆盖!","提示");
    //重新加载数据

    // this.dataGrid1.DataSource =PrintDataSource.GetDataSource(3);
    this.XS();
    }
    catch(Exception eee)
    {
    MessageBox.Show(eee.Message,"提示");
    }
    return; }
    //首次导出数据,创建文件
    StreamWriter sr = File.CreateText(FILE_NAME);
    //导出标题
    for(int a =0;a<ds.Tables[0].Columns.Count;a++)
    {
    sr.Write(ds.Tables[0].Columns[a].ToString()+" ");
    if(ds.Tables[0].Columns[a].ToString()==ds.Tables[0].Columns[ds.Tables[0].Columns.Count-1].ToString())
    {
    sr.WriteLine();
    }
    } //导出内容
    for(int i =0 ;i<dt.Rows.Count;i++)
    {
    for(int j=0;j<dt.Columns.Count;j++)
    {
    sr.Write(dt.Rows[i][j].ToString()+" ");

    }
    if(dt.Rows[i][dt.Columns.Count-1]==dt.Rows[i][dt.Columns.Count-1])
    {
    sr.WriteLine();
    }
    }
    //关闭当前的StreamWriter和基础流
    sr.Close();
    MessageBox.Show("文件已生成!","提示");
    //重新加载数据

    // this.dataGrid1.DataSource =PrintDataSource.GetDataSource(3);
    this.XS();
    txtPath.Text ="";
    }
    #endregion