c#将datagridview信息导入excel
2016-03-31 11:42
381 查看
我们需要添加引用using Excel = Microsoft.Office.Interop.Excel;
1.可以设置导出的excel文件的名字,包含导出位置窗体
2.直接的简单保存,并打开文件
1.可以设置导出的excel文件的名字,包含导出位置窗体
private void ExportExcel(string fileName, DataGridView myDGV, ToolStripProgressBar tempProgressBar, ToolStripStatusLabel toolstrip) { string saveFileName = ""; bool fileSaved = false; SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.DefaultExt = "xls"; saveDialog.Filter = "Excel文件|*.xls"; saveDialog.FileName = fileName; saveDialog.ShowDialog(); saveFileName = saveDialog.FileName; if (saveFileName.IndexOf(":") < 0) return; //被点了取消 tempProgressBar.Visible = true; tempProgressBar.Minimum = 1; tempProgressBar.Maximum = myDGV.RowCount; tempProgressBar.Step = 1; Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); if (excel == null) { MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel"); return; } Microsoft.Office.Interop.Excel.Workbooks workbooks = excel.Workbooks; Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet); Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 //写入标题 for (int i = 0; i < myDGV.ColumnCount; i++) { worksheet.Cells[1, i + 1] = myDGV.Columns[i].HeaderText; } //写入数值 for (int r = 0; r < myDGV.Rows.Count; r++) { for (int i = 0; i < myDGV.ColumnCount; i++) { worksheet.Cells[r + 2, i + 1] = myDGV.Rows[r].Cells[i].Value; } System.Windows.Forms.Application.DoEvents(); toolstrip.Text = "|| 状态:正在生成第 " + r + "/" + myDGV.RowCount + " 个"; tempProgressBar.Value = r + 1; } worksheet.Columns.EntireColumn.AutoFit();//列宽自适应 if (saveFileName != "") { try { workbook.Saved = true; workbook.SaveCopyAs(saveFileName); fileSaved = true; } catch (Exception ex) { fileSaved = false; MessageBox.Show("导出文件时出错,文件可能正被打开!\n" + ex.Message); } } else { fileSaved = false; } excel.Quit(); GC.Collect();//强行销毁 toolstrip.Text = "|| 状态:生成成功!"; if (fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL MessageBox.Show(fileName + "的简明资料保存成功", "提示", MessageBoxButtons.OK); }
2.直接的简单保存,并打开文件
public void DataToExcel(DataGridView dgv, ToolStripProgressBar tempProgressBar, ToolStripStatusLabel toolstrip) { if (dgv.Rows.Count == 0) { MessageBox.Show("无数据"); return; } MessageBox.Show("开始生成要导出的数据", "导出提示", MessageBoxButtons.OK, MessageBoxIcon.Information); Excel.Application excel = new Excel.Application(); excel.Application.Workbooks.Add(true); excel.Visible = false; for (int i = 0; i < dgv.ColumnCount; i++) excel.Cells[1, i + 1] = dgv.Columns[i].HeaderText; tempProgressBar.Visible = true; tempProgressBar.Minimum = 1; tempProgressBar.Maximum = dgv.RowCount; tempProgressBar.Step = 1; toolstrip.Visible = true; for (int i = 0; i < dgv.RowCount; i++) { for (int j = 0; j < dgv.ColumnCount; j++) { if (dgv[j, i].ValueType == typeof(string)) { excel.Cells[i + 2, j + 1] = "'" + dgv[j, i].Value.ToString(); } else { excel.Cells[i + 2, j + 1] = dgv[j, i].Value.ToString(); } } toolstrip.Text = "|| 状态:正在生成第 " + i + "/" + dgv.RowCount + " 个"; tempProgressBar.Value = i + 1; } toolstrip.Text = "|| 状态:生成成功!"; MessageBox.Show("生成成功,请保存。", "生成提示", MessageBoxButtons.OK, MessageBoxIcon.Information); excel.Visible = true; }
相关文章推荐
- 21天学会C#----如何处理异常
- c#
- C#关闭后台进程
- C# 关键字var
- C# 格式化字符串
- C# decimal类型(值类型、非基本类型)
- C# 浮点类型(值类型)
- C# 整数类型(值类型)
- C# 装箱与拆箱
- C# 异常处理
- C#中如何获取上个月第一天和最后一天
- C# string类型(引用类型)
- C# 值类型和引用类型
- C# 常量关键字const
- C# 全局变量与局部变量
- String.Split()函数
- C#查找8邻域连通域算法
- C# 虚方法(virtual)和抽象方法(abstract)方法的区别
- C# 静态变量及静态函数
- C#中子类对父类中虚方法的处理有重写(override)和覆盖(new),他们有什么区别?