方法一:

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. PHP XML SimpleXML

    PHP 可以基于 SimpleXML 生成和解析 xml 的方法,通过本节的实例,你将了解 PHP 是如何使用 SimpleXML 生成及解析 xml 格式数据的. PHP SimpleXML 处理最 ...

  2. JavaScript 注释

    JavaScript 注释可用于提高代码的可读性. JavaScript 注释 JavaScript 不会执行注释. 我们可以添加注释来对 JavaScript 进行解释,或者提高代码的可读性. 单行 ...

  3. 初识Vulkan

    Vulkan是Khronos组织制定的"下一代"开放的图形显示API,是与DirectX12可以匹敌的GPU API标准.Vulkan是基于AMD的Mantle API演化而来,目 ...

  4. Github Atom开源文本代码编辑器- 由 Github 打造的下一代编程开发利器

    个人理解:Github 热度超凡的一个项目Atom,electron是整个atom的核心,对于electron可以理解成 electron =io.js + Chromium    通过 Electr ...

  5. 【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50824912 相关地址介绍 : -- Universal I ...

  6. VMware中的桥接模式、NAT(网络地址转换模式)、Host-only(主机模式):转自:http://blog.chinaunix.net/uid-11798538-id-3061551.html

    其中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口,这些后面会详细介绍.在个虚拟交换机,分别是-个虚拟机交换机,而在VMware Workstation 5以 ...

  7. weakref 待解决.

    暂时不知为何在控制台多执行一次b()后,del a就不会立即销毁Foo实例. >>> class Foo(object): def __init__(self): self.obj ...

  8. Android启动Activity

    Android和java启动的区别 不同于使用 main() 方法启动应用的其他编程范例,Android 系统会通过调用对应于其生命周期中特定阶段的特定回调方法在 Activity 实例中启动代码.有 ...

  9. JavaEE介绍

    相关术语 为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担.为了程 ...

  10. 插件开发之360 DroidPlugin源码分析(五)Service预注册占坑

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52264977 在了解系统的activity,service,broa ...