DatagridView导出成Word和Excel

MikeClp 2014-07-10 09:25:46
怎样将DataGridView中的数据导出为Word或Excel文件,请各位不吝赐教;
...全文
253 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongxi_2689093262 2014-07-12
  • 打赏
  • 举报
回复
DateGridView导出Excel //加载数据集合 private void Frm_Main_Load(object sender, EventArgs e) { dgv_Message.DataSource = new List<Fruit>() {//绑定数据集合 new Fruit(){Name="茉莉",Price=30}, new Fruit(){Name="芍药",Price=40}, new Fruit(){Name="枸杞",Price=33}, new Fruit(){Name="马莲",Price=31}}; dgv_Message.Columns[0].Width = 200;//设置列宽度 dgv_Message.Columns[1].Width = 170;//设置列宽度 } //导出到Excel private Excel.Application G_ea;//定义Word应用程序字段 private object G_missing = //定义G_missing字段并添加引用 System.Reflection.Missing.Value; private void btn_OutPut_Click(object sender, EventArgs e) { List<Fruit> P_Fruit = new List<Fruit>();//创建数据集合 foreach (DataGridViewRow dgvr in dgv_Message.Rows) { P_Fruit.Add(new Fruit()//向数据集合添加数据 { Name = dgvr.Cells[0].Value.ToString(), Price = Convert.ToSingle(dgvr.Cells[1].Value.ToString()) }); } SaveFileDialog P_SaveFileDialog =//创建保存文件对话框对象 new SaveFileDialog(); P_SaveFileDialog.Filter = "*.xls|*.xls"; if (DialogResult.OK ==//确认是否保存文件 P_SaveFileDialog.ShowDialog()) { ThreadPool.QueueUserWorkItem(//开始线程池 (pp) =>//使用lambda表达式 { G_ea = new Microsoft.Office.Interop.Excel.Application();//创建应用程序对象 Excel.Workbook P_wk = G_ea.Workbooks.Add(G_missing);//创建Excel文档 Excel.Worksheet P_ws = (Excel.Worksheet)P_wk.Worksheets.Add(//创建工作区域 G_missing, G_missing, G_missing, G_missing); for (int i = 0; i < P_Fruit.Count; i++) { P_ws.Cells[i + 1, 1] = P_Fruit[i].Name;//向Excel文档中写入内容 P_ws.Cells[i + 1, 2] = P_Fruit[i].//向Excel文档中写入内容 Price.ToString(); } P_wk.SaveAs(//保存Word文件 P_SaveFileDialog.FileName, G_missing, G_missing, G_missing, G_missing, G_missing, Excel.XlSaveAsAccessMode.xlShared, G_missing, G_missing, G_missing, G_missing, G_missing); ((Excel._Application)G_ea.Application).Quit();//退出应用程序 this.Invoke(//调用窗体线程 (MethodInvoker)(() =>//使用lambda表达式 { MessageBox.Show(//弹出消息对话框 "成功创建Excel文档!", "提示!"); })); }); } }
lc_ant 2014-07-11
  • 打赏
  • 举报
回复
学习一下,仅用streamwriter写过excle
ningxin_2670947873 2014-07-11
  • 打赏
  • 举报
回复
将DataGridView中的数据导出到Word //加载绑定数据集合 private void Frm_Main_Load(object sender, EventArgs e) { dgv_Message.DataSource = new List<Fruit>() {//绑定数据集合 new Fruit(){Name="苹果",Price=30}, new Fruit(){Name="橘子",Price=40}, new Fruit(){Name="鸭梨",Price=33}, new Fruit(){Name="水蜜桃",Price=31}}; dgv_Message.Columns[0].Width = 200;//设置列宽度 dgv_Message.Columns[1].Width = 170;//设置列宽度 } //单击导出Word文档事件 private Word.Application G_wa;//定义Word应用程序字段 private object G_missing = //定义G_missing字段并添加引用 System.Reflection.Missing.Value;//CodeGo.net/ private void btn_OutPut_Click(object sender, EventArgs e) { List<Fruit> P_Fruit = new List<Fruit>();//创建数据集合 foreach (DataGridViewRow dgvr in dgv_Message.Rows) { P_Fruit.Add(new Fruit()//向数据集合添加数据 { Name = dgvr.Cells[0].Value.ToString(), Price = Convert.ToSingle(dgvr.Cells[1].Value.ToString()) }); } SaveFileDialog P_SaveFileDialog =//创建保存文件对话框对象 new SaveFileDialog(); P_SaveFileDialog.Filter = "*.doc|*.doc"; if (DialogResult.OK ==//确认是否保存文件 P_SaveFileDialog.ShowDialog()) { ThreadPool.QueueUserWorkItem(//开始线程池 (pp) =>//使用lambda表达式 { G_wa = new Microsoft.Office.Interop.Word.Application();//创建应用程序对象 object P_obj = "Normal.dot";//定义文档模板 Word.Document P_wd = G_wa.Documents.Add(//向Word应用程序中添加文档 ref P_obj, ref G_missing, ref G_missing, ref G_missing); Word.Range P_Range = P_wd.Range(//得到文档范围 ref G_missing, ref G_missing); object o1 = Word.WdDefaultTableBehavior.//设置文档中表格格式 wdWord8TableBehavior; object o2 = Word.WdAutoFitBehavior.//设置文档中表格格式 wdAutoFitWindow; Word.Table P_WordTable = P_Range.Tables.Add(P_Range,//在文档中添加表格 P_Fruit.Count ,2, ref o1, ref o2); P_WordTable.Cell(1, 1).Range.Text = "水果";//向表格中添加信息 P_WordTable.Cell(1, 2).Range.Text = "价格";//向表格中添加信息 for (int i = 2; i < P_Fruit.Count + 1; i++) { P_WordTable.Cell(i, 1).Range.Text =//向表格中添加信息 P_Fruit[i - 2].Name; P_WordTable.Cell(i, 2).Range.Text =//向表格中添加信息 P_Fruit[i - 2].Price.ToString(); } object P_Path = P_SaveFileDialog.FileName; P_wd.SaveAs(//保存Word文件 ref P_Path, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing, ref G_missing); ((Word._Application)G_wa.Application).Quit(//退出应用程序 ref G_missing, ref G_missing, ref G_missing); this.Invoke(//调用窗体线程 (MethodInvoker)(() =>//使用lambda表达式 { MessageBox.Show(//弹出消息对话框 "成功创建Word文档!", "提示!"); })); }); } }
蝶恋花雨 2014-07-10
  • 打赏
  • 举报
回复
利用 Aspose.Words 和 Aspose.Excels 来导出
sjrw96004 2014-07-10
  • 打赏
  • 举报
回复
NPOI 速度最快,而且不依赖Excel软件
mickwen10 2014-07-10
  • 打赏
  • 举报
回复
用Spire.XLS和 Spire.Doc来做吧,有免费版本,不需要office直接文件操作。 Spire.XLS http://www.e-iceblue.com/Introduce/excel-for-net-introduce.html Spire.Doc http://www.e-iceblue.com/Introduce/word-for-net-introduce.html
qq_15798283 2014-07-10
  • 打赏
  • 举报
回复
private void btn_upd_Click(object sender, EventArgs e) { Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; xlApp = new Microsoft.Office.Interop.Excel.Application(); xlWorkBook = xlApp.Workbooks.Add(misValue); xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); int i = 0; int j = 0; for (i = 0; i <= dgv_ContactTb.RowCount - 1; i++) { for (j = 0; j <= dgv_ContactTb.ColumnCount - 1; j++) { DataGridViewCell cell = dgv_ContactTb[j, i]; xlWorkSheet.Cells[i + 1, j + 1] = cell.Value; } } //修改保存路径为当前工程bin/Debug下 string currentPath = System.Environment.CurrentDirectory; string outputFilename = "联系人.xls"; string fullFilename = Path.Combine(currentPath, outputFilename); xlWorkBook.SaveAs(fullFilename, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue); xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); MessageBox.Show("保存完毕,文件位置为当前工程bin/Debug下"); } //释放资源 private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; MessageBox.Show("Exception Occured while releasing object " + ex.ToString()); } finally { GC.Collect(); } }

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧