方法一:

  1. SaveFileDialog dlg = new SaveFileDialog();
  2. dlg.Filter = "Execl files (*.xls)|*.xls";
  3. dlg.FilterIndex = 0;
  4. dlg.RestoreDirectory = true;
  5. dlg.CreatePrompt = true;
  6. dlg.Title = "保存为Excel文件";
  7. dlg.FileName = "不合格记录";//保存的Excel名字
  8. if (dlg.ShowDialog() == DialogResult.OK)
  9. {
  10. Stream myStream;
  11. myStream = dlg.OpenFile();
  12. StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
  13. string columnTitle = "";
  14. try
  15. {
  16. //写入列标题
  17. for (int i = 0; i < dgv.ColumnCount; i++)
  18. {
  19. if (i > 0)
  20. {
  21. columnTitle += "\t";
  22. }
  23. columnTitle += dgv.Columns[i].HeaderText;
  24. }
  25. sw.WriteLine(columnTitle);
  26. //写入列内容
  27. for (int j = 0; j < dgv.Rows.Count; j++)
  28. {
  29. string columnValue = "";
  30. for (int k = 0; k < dgv.Columns.Count; k++)
  31. {
  32. if (k > 0)
  33. {
  34. columnValue += "\t";
  35. }
  36. if (dgv.Rows[j].Cells[k].Value == null)
  37. columnValue += "";
  38. else
  39. columnValue += dgv.Rows[j].Cells[k].Value.ToString().Trim();
  40. }
  41. sw.WriteLine(columnValue);
  42. }
  43. sw.Close();
  44. myStream.Close();
  45. }
  46. catch (Exception e)
  47. {
  48. MessageBox.Show(e.ToString());
  49. }
  50. finally
  51. {
  52. sw.Close();
  53. myStream.Close();
  54. }
  55. }

方法二:包含图片

  1. Microsoft.Office.Interop.Excel.Application Myexcel = new Microsoft.Office.Interop.Excel.Application();
  2. if (Myexcel == null)
  3. {
  4. return;
  5. }
  6. Microsoft.Office.Interop.Excel._Workbook xBk;
  7. xBk = Myexcel.Application.Workbooks.Add(true);
  8. Microsoft.Office.Interop.Excel._Worksheet xSt;
  9. xSt = (Microsoft.Office.Interop.Excel._Worksheet)xBk.ActiveSheet;
  10.  
  11. //设置标题等
  12. string Title = null;
  13. Title = DateTime.Now.ToLongDateString() + "报价表";
  14. xSt.Name = Title;
  15. //报表的格式设置
  16. //xSt.Cells[1, 6] = Title;
  17. // xSt.get_Range(Myexcel.Cells[1, 6], Myexcel.Cells[1, 6]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
  18. // xSt.get_Range(Myexcel.Cells[1, 6], Myexcel.Cells[1, 6]).Font.Bold = true;
  19. //xSt.get_Range(Myexcel.Cells[1, 6], Myexcel.Cells[1, 6]).Font.Size = 20;
  20.  
  21. xSt.Cells[1, 1] = "品号";
  22. xSt.Cells[1, 2] = "品名";
  23. xSt.Cells[1, 3] = "客户品号";
  24. xSt.Cells[1, 4] = "图片";
  25. xSt.Cells[1, 5] = "客户编码";
  26. xSt.Cells[1, 6] = "客户名称";
  27. xSt.Cells[1, 7] = "数量";
  28. xSt.Cells[1, 8] = "币种";
  29. xSt.Cells[1, 9] = "汇率";
  30. xSt.Cells[1, 10] = "原币单价";
  31. xSt.Cells[1, 11] = "原币总价";
  32. xSt.Cells[1, 12] = "本币单价";
  33. xSt.Cells[1, 13] = "本币总价";
  34. xSt.Cells[1, 14] = "创建时间";
  35.  
  36. //下面是用循环把datagridview中的内容写到excel
  37. for (int rowIndex = 0; rowIndex < this.dgvQuotation.Rows.Count; rowIndex++)
  38. {
  39. int colIndex = 0;
  40. for (colIndex = 1; colIndex <= dgvQuotation.ColumnCount; colIndex++)
  41. {
  42. String value = null;
  43. if (dgvQuotation.Rows[rowIndex].Cells[colIndex - 1].Value != null)
  44. {
  45. value = dgvQuotation.Rows[rowIndex].Cells[colIndex - 1].Value.ToString();
  46. if (dgvQuotation.Columns[colIndex - 1].Name == "图片") //处理
  47. {
  48. Image img;
  49. //如果是二进制形式:
  50. //MemoryStream ms = new MemoryStream((byte[])dgvQuotation.Rows[rowIndex].Cells[colIndex - 1].Value);
  51. if (File.Exists(@"D:\产品图片\" + dgvQuotation.Rows[rowIndex].Cells[0].Value.ToString() + ".jpg"))
  52. {
  53. //需要判断是否存在图片
  54. img = Image.FromFile(@"D:\产品图片\" + dgvQuotation.Rows[rowIndex].Cells[0].Value.ToString() + ".jpg");//双引号里是图片的路径
  55.  
  56. }
  57. else
  58. {
  59. //需要判断是否存在图片
  60. img = Image.FromFile(@"D:\产品图片\LOGO.jpg");//双引号里是图片的路径
  61.  
  62. }
  63.  
  64. //Image img = Image.FromStream(ms);
  65. //路径
  66. // Image img = GetImage(value);
  67.  
  68. string tmpName = tmpPath + "\\temp" + rowIndex + ".bmp";
  69. img.Save(tmpName);
  70. string cellAddr = (GetAddress(rowIndex + 4, colIndex));
  71. Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)xSt.get_Range(cellAddr, Type.Missing);
  72. float left = float.Parse(range.Left.ToString());
  73. float top = float.Parse(range.Top.ToString());
  74. float width = float.Parse(range.Width.ToString());
  75. float height = float.Parse(range.Height.ToString());
  76. xSt.Shapes.AddPicture(tmpName, MsoTriState.msoFalse, MsoTriState.msoTrue, left, top, width, height);
  77. //xSt.Shapes.AddPicture(tmpName, MsoTriState.msoFalse, MsoTriState.msoTrue, left, top, 200, 200);
  78. continue;
  79.  
  80. }
  81.  
  82. }
  83.  
  84. xSt.Cells[rowIndex + 4, colIndex] = value;
  85. }
  86.  
  87. }
  88.  
  89. //后台处理
  90. //用户无法看到
  91. Myexcel.Visible = false;
  92. //允许打开对话框保存文件
  93. Myexcel.DisplayAlerts = true;
  94.  
  95. // xBk.Close(true, "D:\\1.xls", null);
  96. xSt = null;
  97. xBk = null;
  98. Myexcel.Quit();
  99. System.Runtime.InteropServices.Marshal.ReleaseComObject(Myexcel);
  100. Myexcel = null;

[WinForm]dataGridView导出到EXCEL的更多相关文章

  1. winform DataGridView 导出到Excel表格 分类: WinForm 2014-07-04 10:48 177人阅读 评论(0) 收藏

    public bool ExportDataGridview(DataGridView gridView)         {             if (gridView.Rows.Count ...

  2. DataGridView导出到Excel的三个方法

    #region DataGridView数据显示到Excel /// <summary> /// 打开Excel并将DataGridView控件中数据导出到Excel /// </s ...

  3. c# datagridview导出到excel【转载】

    c# datagridview导出到excel[转载] http://hi.baidu.com/weizier/blog/item/8212caea1123b4d6d439c9fe.html 本作者使 ...

  4. C# - VS2019 DataGridView导出到Excel的三种方法

    //原文出处:http://www.yongfa365.com/Item/DataGridViewToExcel.html 1 #region DataGridView数据显示到Excel /// & ...

  5. Winform 中 dataGridView 导出到Excel中的方法总结

    最近,在做CS端数据导出到Excel中时网上找了很多代码感觉都不是自己想要的,通过自己的整理归纳得到一个比较通用的方法,就给大家分享一下: 该方法需要用到两个参数(即对象),一个  DataGridV ...

  6. 【转】c# winform DataGridView导出数据到Excel中,可以导出当前页和全部数据

    准备工作就是可以分页的DataGridView,和两个按钮,一个用来导出当前页数据到Excel,一个用来导出全部数据到Excel 没有使用SaveFileDialog,但却可以弹出保存对话框来 先做导 ...

  7. winform datagridview 导出excel

    using System;using System.Collections.Generic;using System.Text;using System.IO;using Microsoft.Offi ...

  8. WinForm中DataGridView导出为Excel(快速版)

    public static void ExportExcel(DataGridView myDGV, string fileName) { string saveFileName = fileName ...

  9. DataGridView 导出到Excel

    #region 导出四个表格到Excel /// <summary> /// 导出四个表格到Excel /// </summary> /// <param name=&q ...

随机推荐

  1. Android项目实战(四十五):Usb转串口通讯(CH34xUARTDriver)

    需求为:手机usb接口插入一个硬件,从硬件上获取数据 例如:手机usb插入硬件A,A通过蓝牙通讯获取设备a.b的数据,作为中转站(可以做些数据处理)将数据(设备a.b产生的)传给手机程序. 设备A也可 ...

  2. jQuery 遍历 – 同胞(siblings)

    同胞拥有相同的父元素. 通过 jQuery,您能够在 DOM 树中遍历元素的同胞元素. 在 DOM 树中水平遍历 有许多有用的方法让我们在 DOM 树进行水平遍历: siblings() next() ...

  3. MongoDB 条件操作符

    描述 条件操作符用于比较两个表达式并从mongoDB集合中获取数据. 在本章节中,我们将讨论如何在MongoDB中使用条件操作符. MongoDB中条件操作符有: (>) 大于 - $gt (& ...

  4. linux:如何指定进程运行的CPU

    coolshell最新的文章<性能调优攻略>在"多核CPU调优"章节,提到"我们不能任由操作系统负载均衡,因为我们自己更了解自己的程序,所以,我们可以手动地为 ...

  5. 《Shazam It! Music Recognition Algorithms, Fingerprinting, and Processing》译文

    最近看到一篇老外写的博客,简单介绍了shazam的工作原理.图非常好,所以就把它翻译成中文,希望对搞听歌识曲的人有帮助. 你可能遇到这样的场景:在酒吧或者餐厅听到你非常熟悉的歌,也许你曾经听过无数次, ...

  6. ubuntu切换java版本

    众所周知,ubuntu经常需要安装不同的java版本,他们之间的切换就是一个很大的问题 1.Chose another Java loader: sudo update-alternatives -- ...

  7. OpenMP与MPI联合编程

    研究一下如何一起使用mpi和openmp 先上程序: #include <stdio.h> #include <stdlib.h> #ifdef _OPENMP #includ ...

  8. JDBC编程-事务编程(四)

    事务的概念 事务的概念在我看来是指的是一组sql序列,这个序列是一块执行的单位,要么全部执行,要不全部执行,这样可以很好的对数据库进行并发控制. 因为数据库是多个用户都可以同时操作的,如果多个用户同时 ...

  9. 自己写一个网页版的Markdown实时编辑器

    这几天忙着使用Python+Django+sqlite 搭建自己的博客系统,但是单纯的使用H5的TextArea,简直太挫了有木有.所以,就想模仿一下人家内嵌到网页上的Markdown编辑器,从而让自 ...

  10. UNIX网络编程——tcp流协议产生的粘包问题和解决方案

    我们在前面曾经说过,发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体 ...