今天vs2010c#开发做datagridview导出Excel文件时,发现一个问题,和大家探讨一下:

第一种方式:写流的方式

private void button_Excel_Click(object sender, EventArgs e)
        {
                  if (dataGridView1.Tag.ToString() == "1")
            {

SaveFileDialog saveFileDialog = new SaveFileDialog();
                    saveFileDialog.Filter = "Microsoft Office Execl 工作薄(*.xls)|*.xls";
                    saveFileDialog.FilterIndex = 0;
                    saveFileDialog.RestoreDirectory = true;
                    saveFileDialog.CreatePrompt = true;
                    saveFileDialog.Title = "Export Excel File To";
                    saveFileDialog.ShowDialog();
                    Stream myStream;
                    myStream = saveFileDialog.OpenFile();
                    StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding("gb2312"));
                    string str = "";
                    try
                    {
                        //写标题
                        for (int i = 0; i < this.dataGridView1.ColumnCount; i++)
                        {
                            if (i > 0)
                            {
                                str += "\t";
                            }
                            str += this.dataGridView1.Columns[i].HeaderText;
                        }
                        sw.WriteLine(str);
                        //写内容
                        for (int j = 0; j < this.dataGridView1.Rows.Count; j++)
                        {
                            string tempStr = "";
                            for (int k = 0; k < this.dataGridView1.Columns.Count; k++)
                            {
                                if (k > 0)
                                {
                                    tempStr += "\t";
                                }
                                tempStr += this.dataGridView1.Rows[j].Cells[k].Value.ToString();
                            }

sw.WriteLine(tempStr);
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                    }
                    finally
                    {
                        sw.Close();
                        myStream.Close();
                    }

}
            else
            {

MessageBox.Show("请先转换格式,再导出excel文件!", "提示");

}

}

这种方式也能导出excel文件,不过是假的,当你打开之后再关闭时,会提示你,另存为新的excel文件,所以比较烦人。

另外,程序运行完后,会提示:未将对象引用设置到对象的实例;

应该是“ tempStr += this.dataGridView1.Rows[j].Cells[k].Value.ToString();”这行,,不知道什么原因。

基于以上原因,程序中没有采用这个方式。

第二种方式:新建excel表格,需要添加相应的引用;

private void button_Excel_Click(object sender, EventArgs e)
        {
            if (dataGridView1.Tag.ToString() == "1")
            {
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                Microsoft.Office.Interop.Excel.Workbook workbook;
                Microsoft.Office.Interop.Excel.Worksheet worksheet;
                excel.Visible = true;                            //是Excel可见
                workbook = excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
                worksheet = (Worksheet)workbook.Worksheets[1];
                System.Data.DataTable ecpTable = null;
                ecpTable = (System.Data.DataTable)dataGridView1.DataSource;
                for (int r = 0; r < ecpTable.Rows.Count; r++)
                {
                    for (int i = 0; i < ecpTable.Columns.Count; i++)
                    {
                        worksheet.Cells[r + 1, i + 1] = ecpTable.Rows[r][i].ToString();
                    }
                 }
            }
            else
            { MessageBox.Show("请先转换格式,再导出excel文件!", "提示"); }

}

这种方式比较成功,你能看到导入的数据。最后采用了这种方式。

c# datagridview导出Excel文件 问题的更多相关文章

  1. 从DataGridView导出Excel

    从DataGridView导出Excel的两种情况,不多说,直接记录代码(新建类,直接引用传入参数). using System; using System.Collections.Generic; ...

  2. 一个通用的DataGridView导出Excel扩展方法(支持列数据格式化)

    假如数据库表中某个字段存放的值“1”和“0”分别代表“是”和“否”,要在DataGridView中显示“是”和“否”,一般用两种方法,一种是在sql中直接判断获取,另一种是在DataGridView的 ...

  3. .Net应用导入、导出Excel文件

    本次阐述的导入和导出都围绕此Demo进行

  4. ExtJS Grid导出excel文件

    ExtJS Grid导出excel文件, 需下载POI:链接:http://pan.baidu.com/s/1i3lkPhF 密码:rqbg 1.将Grid表格数据连同表格列名传到后台 2.后台导出e ...

  5. PHP从数据库导出EXCEL文件

    参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...

  6. jxl导出Excel文件

    一.java项目实现读取Excel文件和导出Excel文件 实现读取和导出Excel文件的代码: package servlet; import java.io.FileInputStream; im ...

  7. PHP导出excel文件

    现在教教你如何导入excel文件: 在我的文件储存里面有一个com文件夹的,将其解压放在ThinkPHP/Library/文件夹里面,然后就是写控制器啦!去调用这个插件: <?php names ...

  8. 【转】 (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  9. PHPExcel导出excel文件

    今天园子刚开,先来个货顶下,后续园丁qing我会再慢慢种园子的,希望大家多来园子逛逛. PHPExcel导出excel文件,先说下重要的参数要记住的东西 impUser() 导入方法 exportEx ...

随机推荐

  1. c# 第10节 表达式

    本节内容: 1:表达式是什么 2:表达式实例 1:表达式是什么 2:表达式实例 3:运算符分类

  2. 201871010108-高文利《面向对象程序设计(java)》第八周学习总结

    项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址> ht ...

  3. CF1256(div3 java题解)

    A: 题意:给定A个N元,B个一元,问是否可以凑成S元. 思路:A*i+j=S 即 A*I<=S<=A*I+B 即min(S/N,A)+B>=S: /* @author nimphy ...

  4. VIJOS-P1325 桐桐的糖果计划

    VIJOS-P1325 桐桐的糖果计划 JDOJ 1432 桐桐的糖果计划 https://neooj.com/oldoj/problem.php?id=1432 Description 桐桐很喜欢吃 ...

  5. JavaScript中的this—你不知道的JavaScript上卷读书笔记(三)

    this是什么? this 是在运行时进行绑定的,并不是在编写时绑定,它的上下文取决于函数调用时的各种条件.this 的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式.当一个函数被调用时,会 ...

  6. Linux性能优化实战学习笔记:第五讲

    一.什么是CPU的使用率 1.你最常用什么指标来描述系统的CPU性能? 我想你的答案,可能不是平均负载,也不是CPU上下文切换,而是另一个更直观的指标CPU使用率 CPU使用率到底是怎么算出来的吗? ...

  7. oracle--ORA-38760

    01,ORA-38760: This database instance failed to turn on flashback 02,问题处理思路 第一步:查看日志文件 查看这次启动的时候alter ...

  8. 509道Java面试题解析:2020年最新Java面试题

    <Java面试全解析>是我在 GitChat 发布的一门电子书,全书总共有 15 万字和 505 道 Java 面试题解析,目前来说应该是最实用和最全的 Java 面试题解析了. 我本人是 ...

  9. 了解jsp,这一篇就够了.

    jsp的执行过程: 1 客户端发出请求. 2 Web容器将JSP转译成Servlet源代码. 3 Web容器将产生的源代码进行编译. 4 Web容器加载编译后的代码并执行. 5 把执行结果响应至客户端 ...

  10. Java 微信支付分对接记录 (先享后付)

    微信支付分(先享后付)对接记录: 微信支付分对接步骤 填写开通支付分的申请表格 此步骤大概需要审核 1-3 个工作日; (模板-服务信息配置表-[先享后付免确认]-[商户名].xls) 填写商户信息 ...