本帖最后由 zhengdazheng1 于 2010-03-18 18:57:29 编辑

解决方案 »

  1.   

    上面是以流的方式保存到excel中,所以没有使用excel组件
      

  2.   


    以流的方式导入到word中#region 导出当前页DataGridView中的数据到Word中        public void ExportDataGridViewToWord(DataGridView srcDgv, ProgressBar progreesBar, SaveFileDialog sfile)
            {
                if (srcDgv.Rows.Count == 0)
                {
                    MessageBox.Show("没有数据可供导出!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else
                {
                    sfile.AddExtension = true;
                    sfile.DefaultExt = ".doc";
                    sfile.Filter = "(*.doc)|*.doc";
                    if (sfile.ShowDialog() == DialogResult.OK)
                    {
                        progreesBar.Visible = true;
                        object path = sfile.FileName;
                        Object none = System.Reflection.Missing.Value;
                        Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
                        Microsoft.Office.Interop.Word.Document document = wordApp.Documents.Add(ref none, ref none, ref none, ref none);
                        //建立表格
                        Microsoft.Office.Interop.Word.Table table = document.Tables.Add(document.Paragraphs.Last.Range, srcDgv.Rows.Count, srcDgv.Columns.Count, ref none, ref none);
                        try
                        {
                            for (int i = 0; i < srcDgv.Columns.Count; i++)//设置标题
                            {
                                table.Cell(0, i + 1).Range.Text = srcDgv.Columns[i].HeaderText;
                            }
                            for (int i = 1; i < srcDgv.Rows.Count; i++)//填充数据
                            {
                                for (int j = 0; j < srcDgv.Columns.Count; j++)
                                {
                                    table.Cell(i + 1, j + 1).Range.Text = srcDgv[j, i - 1].Value.ToString();
                                }
                                progreesBar.Value += 100 / srcDgv.RowCount;
                            }
                            document.SaveAs(ref path, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none, ref none);
                            document.Close(ref none, ref none, ref none);                        progreesBar.Value = 100;
                            MessageBox.Show("数据已经成功导出到:" + sfile.FileName.ToString(), "导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            progreesBar.Value = 0;
                            progreesBar.Visible = false;
                        }
                        catch(Exception e)
                        {
                            MessageBox.Show(e.Message, "友情提示", MessageBoxButtons.OK);
                        }
                        finally
                        {
                            wordApp.Quit(ref none, ref none, ref none);
                        }
                    }
                }
                
            } 
            #endregion