方法一:

SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Execl files (*.xls)|*.xls";
dlg.FilterIndex = 0;
dlg.RestoreDirectory = true;
dlg.CreatePrompt = true;
dlg.Title = "保存为Excel文件";
dlg.FileName = "不合格记录";//保存的Excel名字
if (dlg.ShowDialog() == DialogResult.OK)
{
    Stream myStream;
    myStream = dlg.OpenFile();
    StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
    string columnTitle = "";
    try
    {
        //写入列标题
        for (int i = 0; i < dgv.ColumnCount; i++)
        {
            if (i > 0)
            {
                columnTitle += "\t";
            }
            columnTitle += dgv.Columns[i].HeaderText;
        }
        sw.WriteLine(columnTitle);
        //写入列内容
        for (int j = 0; j < dgv.Rows.Count; j++)
        {
            string columnValue = "";
            for (int k = 0; k < dgv.Columns.Count; k++)
            {
                if (k > 0)
                {
                    columnValue += "\t";
                }
                if (dgv.Rows[j].Cells[k].Value == null)
                    columnValue += "";
                else
                    columnValue += dgv.Rows[j].Cells[k].Value.ToString().Trim();
            }
            sw.WriteLine(columnValue);
        }
        sw.Close();
        myStream.Close();
    }
    catch (Exception e)
    {
        MessageBox.Show(e.ToString());
    }
    finally
    {
        sw.Close();
        myStream.Close();
    }
}

方法二:包含图片

Microsoft.Office.Interop.Excel.Application Myexcel = new Microsoft.Office.Interop.Excel.Application();
            if (Myexcel == null)
            {
                return;
            }
            Microsoft.Office.Interop.Excel._Workbook xBk;
            xBk = Myexcel.Application.Workbooks.Add(true);
            Microsoft.Office.Interop.Excel._Worksheet xSt;
            xSt = (Microsoft.Office.Interop.Excel._Worksheet)xBk.ActiveSheet;

            //设置标题等
            string Title = null;
            Title = DateTime.Now.ToLongDateString() + "报价表";
            xSt.Name = Title;
            //报表的格式设置
            //xSt.Cells[1, 6] = Title;
            // xSt.get_Range(Myexcel.Cells[1, 6], Myexcel.Cells[1, 6]).HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
            // xSt.get_Range(Myexcel.Cells[1, 6], Myexcel.Cells[1, 6]).Font.Bold = true;
            //xSt.get_Range(Myexcel.Cells[1, 6], Myexcel.Cells[1, 6]).Font.Size = 20;

            xSt.Cells[1, 1] = "品号";
            xSt.Cells[1, 2] = "品名";
            xSt.Cells[1, 3] = "客户品号";
            xSt.Cells[1, 4] = "图片";
            xSt.Cells[1, 5] = "客户编码";
            xSt.Cells[1, 6] = "客户名称";
            xSt.Cells[1, 7] = "数量";
            xSt.Cells[1, 8] = "币种";
            xSt.Cells[1, 9] = "汇率";
            xSt.Cells[1, 10] = "原币单价";
            xSt.Cells[1, 11] = "原币总价";
            xSt.Cells[1, 12] = "本币单价";
            xSt.Cells[1, 13] = "本币总价";
            xSt.Cells[1, 14] = "创建时间";

            //下面是用循环把datagridview中的内容写到excel
            for (int rowIndex = 0; rowIndex < this.dgvQuotation.Rows.Count; rowIndex++)
            {
                int colIndex = 0;
                for (colIndex = 1; colIndex <= dgvQuotation.ColumnCount; colIndex++)
                {
                    String value = null;
                    if (dgvQuotation.Rows[rowIndex].Cells[colIndex - 1].Value != null)
                    {
                        value = dgvQuotation.Rows[rowIndex].Cells[colIndex - 1].Value.ToString();
                        if (dgvQuotation.Columns[colIndex - 1].Name == "图片") //处理
                        {
                            Image img;
                            //如果是二进制形式:
                            //MemoryStream ms = new MemoryStream((byte[])dgvQuotation.Rows[rowIndex].Cells[colIndex - 1].Value);
                            if (File.Exists(@"D:\产品图片\" + dgvQuotation.Rows[rowIndex].Cells[0].Value.ToString() + ".jpg"))
                            {
                                //需要判断是否存在图片
                                 img = Image.FromFile(@"D:\产品图片\" + dgvQuotation.Rows[rowIndex].Cells[0].Value.ToString() + ".jpg");//双引号里是图片的路径

                            }
                            else
                            {
                                //需要判断是否存在图片
                                 img = Image.FromFile(@"D:\产品图片\LOGO.jpg");//双引号里是图片的路径

                            }

                            //Image img = Image.FromStream(ms);
                            //路径
                           // Image img = GetImage(value);

                            string tmpName = tmpPath + "\\temp" + rowIndex + ".bmp";
                            img.Save(tmpName);
                            string cellAddr = (GetAddress(rowIndex + 4, colIndex));
                            Microsoft.Office.Interop.Excel.Range range = (Microsoft.Office.Interop.Excel.Range)xSt.get_Range(cellAddr, Type.Missing);
                            float left = float.Parse(range.Left.ToString());
                            float top = float.Parse(range.Top.ToString());
                            float width = float.Parse(range.Width.ToString());
                            float height = float.Parse(range.Height.ToString());
                            xSt.Shapes.AddPicture(tmpName, MsoTriState.msoFalse, MsoTriState.msoTrue, left, top, width, height);
                            //xSt.Shapes.AddPicture(tmpName, MsoTriState.msoFalse, MsoTriState.msoTrue, left, top, 200, 200);
                            continue;

                        }

                    }

                    xSt.Cells[rowIndex + 4, colIndex] = value;
                }

            }

            //后台处理
            //用户无法看到
            Myexcel.Visible = false;
            //允许打开对话框保存文件
            Myexcel.DisplayAlerts = true;

           // xBk.Close(true, "D:\\1.xls", null);
            xSt = null;
            xBk = null;
            Myexcel.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(Myexcel);
            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. 安利三款提升幸福感的chrome插件

    谷歌访问助手 chrome浏览器一直是各大码农推荐的比较好用的浏览器,速度快.插件多. 但是由于众所周知的原因导致了谷歌账号同步.扩展商店访问慢甚至打不开的情况. 谷歌访问助手就是用来解决此问题的. ...

  2. Dynamics CRM2016 Update or Create parentcustomerid in Contact using web api

    联系人实体中有个特殊的字段parentcustomerid 在通过web api创建或更新记录时,如果在给这个字段赋值时当做查找字段对待的话,那你就会遇到问题了,报错信息如下 正确的赋值方式如下

  3. docker iotop :OSError: Netlink error: No such file or directory

    在容器内使用iotop ,错误信息: raceback (most recent call last): File "/usr/sbin/iotop", line 16, in & ...

  4. Freeline--Android平台上的秒级编译方案

    Freeline 技术揭秘 Freeline是什么? Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部 ...

  5. Unity3d导出场景地图寻路

    Unity3d导出场景地图寻路(金庆的专栏)Unity3d中用无渲染的透明盒子摆出地面和阻档区域.        this.renderer.enabled = false;所有这些盒子设为Navig ...

  6. TextView + Spanned实现图文混排以及图片点击交互

    最近要实现图文混排的需求,webview过大,所以想到了用SpannableStringBuilder来实现. 不过参考了大量国内文章,大多数是教你如何实现图文混排,并没有提及图片点击交互的.有翻阅了 ...

  7. Spring之AOP模块

    AOP(Aspect Oriented Programming,面向切面编程)是Spring框架的一个重要特征 Spring推荐使用接口编程 Spring提供三种拦截器:方法前拦截器.返回后拦截器.异 ...

  8. EBS开发性能优化之SQL语句优化

    (1)选择运算 尽可能先做选择运算,这是优化策略中最重要.最基本的一条,选择运算一般会使计算的中间结果大大变小,在对同一表格进行多个选择运算时,选择条件的排列顺序对性能也有很大影响,因为排列顺序不仅影 ...

  9. Android Multimedia框架总结(五)多媒体基础概念

    转载请把头部出处链接和尾部二维码一起转载,本文出自: http://blog.csdn.net/hejjunlin/article/details/52431887 上篇中介绍了MediaPlayer ...

  10. activity的启动模式和栈管理

     在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的.     Intent ...