说下思路,
首先,通过datagridview肯定能过得到所有数据所在的DataTable,一般保存数据都是向Excel中保存,如果你的datagridview格式没有合并行之类的,可以使用微软自带的导入工具,
如果格式有合并行之类的,那就要使用第三方插件NPOI来保存了,记住一件事,代码在开发中,是最不重要的。

解决方案 »

  1.   

    这样吗
    /// <summary>
            /// 将指定的DataTable导出到Excel文件
            /// </summary>
            /// <param name="dt"></param>
            /// <returns></returns>
            public int Export(string path, System.Data. DataTable dt)
            {
                try
                {
                   
                    Microsoft.Office.Interop.Excel. Application excelkccx = new Microsoft.Office.Interop.Excel.Application ();
                    Microsoft.Office.Interop.Excel. _Workbook wb = excelkccx.Workbooks.Add(true );
                    Range rngA = (Range )excelkccx.Columns["A", Type.Missing];//设置单元格格式
                    rngA.NumberFormatLocal = "@";//字符型格式
                    //Range rngD = (Range)excelkccx.Columns["D", Type.Missing];//设置单元格格式
                    //rngD.NumberFormatLocal = "0.00";
                    //Range rngE = (Range)excelkccx.Columns["E", Type.Missing];//设置单元格格式
                    //rngE.NumberFormatLocal = "0.00";
                    //Range rngF = (Range)excelkccx.Columns["F", Type.Missing];//设置单元格格式
                    //rngF.NumberFormatLocal = "0.00";
                    //Range rngAll = (Range)excelkccx.Columns["B","C"];
                    //rngAll.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;   //字段水平居中
                    //Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)excelkccx.Workbooks[1].Worksheets[1];
                    //string name = ws.Name; //获取sheet名称
                    //System.Data.DataTable dt = ds.Tables[0];
                    int row = 2;
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        excelkccx.Cells[1, i + 1] = dt.Columns[i].ColumnName.ToString();
                    }
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            excelkccx.Cells[row, j + 1] = dt.Rows[i][j].ToString();
                        }
                        row++;
                    }
                    wb.SaveAs(path);
                    wb.Close( false, null , null);
                    excelkccx.Quit();
                    wb = null;
                    excelkccx = null;
                    return 1;
                   
                }
                catch(Exception ex)
                {
                    return 0;
                }
            }          //获取导出的路径
    private void button3_Click(object sender, EventArgs e)
            {
                if (dt2.Rows.Count > 0)
                {
                    string path = "" ;
                    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        path = saveFileDialog1.FileName + ".xls"; //默认保存格式
                    }
                    if (path == "" )
                    {
                        MessageBox.Show("请选选择导出文件所在路径" , "错误");
                        return;
                    }
                    if (Export(path, dt2) == 1)
                    {
                        MessageBox.Show("已经在您所选目录下生成未导入的部分商品信息" , "提示");
                    }
                    else if (Export(path, dt2) == 0)
                    {
                        MessageBox.Show("Excel文件未生成,请联系程序猿^_^" , "错误");
                    }
                }
                else
                {
                    MessageBox.Show("没有要导出的数据" , "错误");
                }
            }
      

  2.   

    抱歉,我说错了,应该是导入到word中然后自动保存。。因为完全不了解这部分,可否再给代码,分可以全给你。谢谢!!!!
      

  3.   

    抱歉,我说错了,应该是导入到word中然后自动保存。。因为完全不了解这部分,可否再给代码,分可以全给你。谢谢!!!!
    http://itlee.blog.51cto.com/934143/203018
    http://zhangjiankun880.blog.163.com/blog/static/1355403201091995653297/
    这两个你都可以参考 word我不怎么做,一般都是excel多,你题目也是excel所以....
      

  4.   

    private void OutWord_Load(object sender, EventArgs e)
            {
                string sql = "select * from mrgw limit 0,10";
                DataTable dt = TaoBaoDBHelperMySQL.GetDataSet(sql).Tables[0];
                ExportToWord(dt,"D://aaa");
            }
            /// <summary>
            /// 将数据表导出到word
            /// </summary>
            /// <param name="dt">数据表</param>
            /// <param name="isShowWord">是否显示word</param>
            /// <param name="fileName">导出到文件名</param>
            /// <param name="picName">导出到word中图片名</param>
            /// <returns></returns>
            public static bool ExportToWord(DataTable dt, object fileName)
            {
                if (System.IO.File.Exists(fileName.ToString()))
                {
                    System.IO.File.Delete(fileName.ToString());
                }
                bool result = true;            Object myobj = Missing.Value; ;
                if (dt == null || dt.Rows.Count == 0)
                {
                    result = false;
                }
                else
                {
                    //建立Word应用
                    Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();                //word文档
                    Microsoft.Office.Interop.Word.Document mydoc = new Microsoft.Office.Interop.Word.Document();
                    mydoc = word.Documents.Add(ref myobj, ref myobj, ref myobj, ref myobj);
                    mydoc.Select();                Microsoft.Office.Interop.Word.Selection mysel = word.Selection;                //mysel.InlineShapes.AddPicture(picName, ref myobj, ref myobj, ref myobj);
                    object top = 100;
                    object left = 300;
                    object hw = 100;
                    //将数据生成Word表格文件
                    Microsoft.Office.Interop.Word.Table mytable = mydoc.Tables.Add(mysel.Range, dt.Rows.Count, dt.Columns.Count, ref myobj, ref myobj);                //设置列宽
                    mytable.Columns.SetWidth(50, Microsoft.Office.Interop.Word.WdRulerStyle.wdAdjustNone);                //输出列标题数据
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        mytable.Cell(1, i + 1).Range.InsertAfter(dt.Columns[i].ColumnName);
                    }
                    //输出控件中的记录
                    for (int i = 0; i < dt.Rows.Count - 1; i++)
                    {
                        for (int j = 0; j < dt.Columns.Count; j++)
                        {
                            mytable.Cell(i + 2, j + 1).Range.InsertAfter(dt.Rows[i][j].ToString());
                        }
                    }                //mydoc.Shapes.AddPicture(picName, ref myobj, ref myobj, ref left, ref top, ref hw, ref hw, ref myobj);                //保存文本
                    mydoc.SaveAs(ref fileName, ref myobj, ref myobj, ref myobj, ref myobj, ref myobj,
                    ref myobj, ref myobj, ref myobj, ref myobj, ref myobj, ref myobj,
                    ref myobj, ref myobj, ref myobj, ref myobj);
                }            return result;
            }
    自己试了,可以用 导出WORD