/// <summary>
       /// 导出datatable到word
       /// </summary>
       /// <param name="dg">需要中文列名的表</param>
       public static void ExportWord(DataTable dg)
       {
           try
           {
               if (dg.Rows.Count != 0)
               {
                   //建表格
                   object Nothing = System.Reflection.Missing.Value;
                   Word._Application oWord;
                   Word._Document oDoc;
                   oWord = new Word.Application();
                   oWord.Visible = true;
                   oDoc = oWord.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing);
                   object start = 0;
                   object end = 0;
                   Word.Range tableLocation = oDoc.Range(ref start, ref end);
                   oDoc.Tables.Add(tableLocation, dg.Rows.Count+1, dg.Columns.Count, ref Nothing, ref Nothing);
                   Word.Table newTable = oDoc.Tables[1];
                   newTable.Borders.OutsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
                   newTable.Borders.InsideLineStyle = Word.WdLineStyle.wdLineStyleSingle;
                   object beforeRow = newTable.Rows[1];
                   newTable.Rows.Add(ref beforeRow);

                   //赋值
                   for(int i=0;i<dg.Columns.Count;i++)
                   {
                       newTable.Cell(1, i+1).Range.Text = dg.Columns[i].ColumnName;
                   }
                   for (int i = 0; i < dg.Rows.Count; i++)
                   {
                       for (int j = 0; j < dg.Columns.Count; j++)
                       {
                           newTable.Cell(i + 2, j+1).Range.Text = dg.Rows[i][j].ToString();
                       }
                   }

                   object fileName = "";
                   oDoc.SaveAs(fileName, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing,
                        ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing);
                   oWord.Documents.Open(fileName, Nothing, false, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing);
               }
           }
           catch
           { }
       

/// <summary>
       /// 导出datatable到Excel
       /// </summary>
       /// <param name="dg">需要中文列名的表</param>
       public static void ExportExcel(DataTable dg)
       {
           try
           {
               if (dg.Rows.Count != 0)
               {
                   Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
                   //Microsoft.Office.Interop.Excel.ApplicationClass ac = new Microsoft.Office.Interop.Excel.ApplicationClass();
                
                   Microsoft.Office.Interop.Excel.Workbook wb; //这里千万不能使用 new 来实例对象,不然会异常

                   Microsoft.Office.Interop.Excel.Worksheet ws;



                
                   wb = app.Workbooks.Add(System.Reflection.Missing.Value);  //创建工作簿(WorkBook:即Excel文件主体本身)
                   ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.Worksheets.Add(System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);        //创建工作表(Worksheet:工作表,即Excel里的子表sheet)

                   //设置表名
                   ws.Name = dg.TableName == "" ? "Table" : dg.TableName;
                   //赋值
                   for (int i = 0; i < dg.Columns.Count; i++)
                   {
                       ws.Cells[1, i + 1] = dg.Columns[i].ColumnName;
                   }
                   //将数据导入到工作表的单元格
                   for (int i = 0; i < dg.Rows.Count; i++)
                   {
                       for (int j = 0; j < dg.Columns.Count; j++)
                           ws.Cells[i + 2, j + 1] = dg.Rows[i][j].ToString();
                   }
                   string strPath = Environment.CurrentDirectory;
                   Microsoft.Win32.SaveFileDialog dialogOpenFile = new Microsoft.Win32.SaveFileDialog();
                   dialogOpenFile.DefaultExt = "xls";//默认扩展名
                   dialogOpenFile.AddExtension = true;//是否自动添加扩展名
                   dialogOpenFile.Filter = "*.xls|.xls";
                   dialogOpenFile.OverwritePrompt = true;//文件已存在是否提示覆盖
                   dialogOpenFile.FileName = ws.Name;//默认文件名
                   dialogOpenFile.CheckPathExists = true;//提示输入的文件名无效
                   dialogOpenFile.Title = "保存EXCEL";
                   //显示对话框
                   bool? b = dialogOpenFile.ShowDialog();
                   if (b == true)//点击保存
                   {
                       //保存到文件
                       wb.SaveAs(dialogOpenFile.FileName, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
                   }
                   
                   //恢复系统路径-涉及不到的可以去掉
                   Environment.CurrentDirectory = strPath;
                  
                   //关闭
                   wb.Close(System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
                  
               }
           }
           catch
           { }

       }

 

posted on 2014-08-15 09:24  褚海达  阅读(1427)  评论(0编辑  收藏  举报