在软件开发过程中,时常会遇到把一些数据信息从DataGridView中导出到Excel表格中的情况。假设写的多了就会发现挺简单的,我们最好还是来写一写,留作备用,毕竟有时候Ctrl+C和Ctrl+V还是比較方便的。

思路非常easy。写一个Module,然后调用:

Module代码例如以下:

<span style="font-family:Times New Roman;font-size:18px;">'**********************************************
' 文 件 名:LeadToExcel
' 命名空间:UI
' 功 能:将DataGridView中的数据导出到Excel表中
' 作 者:郝贵宝
' 生成日期:2014/8/23 10:55:54
' 版 本 号:V1.0.0.0
' 改动日志:
' 版权说明:
'***********************************************
Imports Microsoft.Office.Interop '加入对Office的引用
Module LeadToExcel
Function LeadToExcel(ByVal dgv As DataGridView) As Boolean '导出为Excel函数
'建立Excel连接
Dim myExcel As New Excel.Application()
myExcel.Application.Workbooks.Add(True)
myExcel.Visible = True '定义循环变量,行,列变量
Dim intRow As Integer
Dim intColumn As Integer
Dim intTitle As Integer
'加入表头
For intTitle = 0 To dgv.ColumnCount - 1
myExcel.Cells(1, intTitle + 1) = dgv.Columns(intTitle).HeaderText
Next intTitle '通过循环来加入控件中的数据到表格中
For intRow = 0 To dgv.RowCount - 1
For intColumn = 0 To dgv.ColumnCount - 1
'因为第一行是表头,所以加入数据时:
'Excel中从第二行,第一列(2,1)開始赋值。
'DataGridView从第一行,第一列(0。0)開始赋值(index 从0,0開始)
myExcel.Cells(intRow + 2, intColumn + 1) = dgv(intColumn, intRow).Value.ToString
Next intColumn
Next intRow Return True '加入完成,返回true
End Function End Module</span>

点击button调用

<span style="font-family:Times New Roman;font-size:18px;">    Private Sub btnLeadExcel_Click(sender As Object, e As EventArgs) Handles btnLeadExcel.Click
Call LeadToExcel.LeadToExcel(DataGridView1)
End Sub</span>

O(∩_∩)O~大致上就是这样了,可是仍有一些细节须要注意

问题缘由:假设你在DataGridView中显示的有数字,且数字以0开头,则导出Excel后0消失了。(比方某卡号为001,导出后显示为1)

假设细致想想就会明确。Excel中数字的格式默觉得常规(常规单元格格式不包括不论什么特定的数字格式),所以数字前面的 0 会被去掉。

解决方式:在LeadToExcel模块中,赋值时在数据前加上" ’ "  变为文本格式就可以,例如以下:

<span style="font-family:Times New Roman;font-size:18px;">        '通过循环来加入控件中的数据到表格中
For intRow = 0 To dgv.RowCount - 1
For intColumn = 0 To dgv.ColumnCount - 1
'因为第一行是表头。所以加入数据时:
'Excel中从第二行,第一列(2。1)開始赋值。
'DataGridView从第一行。第一列(0。0)開始赋值(index 从0,0開始)
myExcel.Cells(intRow + 2, intColumn + 1) = "'" + dgv(intColumn, intRow).Value.ToString
Next intColumn
Next intRow</span>



解决方式再思考:依照上述方法,会把全部的单元格都变成了文本格式,并不一定满足全部情况,于是,须要找到数据所在列了。仅仅在这一列内容的前面加“ ’ ” 即可了。

举一反三:日期。时间,货币的格式转换都能够依照这个思路来解决。

再领悟:假设当初在设计数据库或写实体时就能考虑到这些情况,而做出适当改变,也许后面的这些问题就不会产生了。(ps:还会遇到其它新的问题,呵呵,这些都须要日后不断的积累经验吧)

DataGridView导出数据到Excel及单元格格式的改动的更多相关文章

  1. excel将单元格格式由数字转为文本

    由于python读取excel数据时,整数总会变成浮点数,例如1会变成1.0,这时可以通过将excel里面的数字转化为文本,再读取出来就不会变成浮点数了.还有一种情况是excel里面的数字是由公式计算 ...

  2. DataGridView导出数据到Excel

    //传入DataGridView /// <summary> /// 输出数据到Excel /// </summary> /// <param name="da ...

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

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

  4. python 操作openpyxl导出Excel 设置单元格格式以及合并处理

    贴上一个例子,里面设计很多用法,根据将相同日期的某些行合并处理. from openpyxl import Workbook from openpyxl.styles import Font, Fil ...

  5. Excel更改单元格格式后无效

    问题描述: 比如修改了数据的自定义显示格式(日期显示 yyyy"年"m"月",手机号分段000-0000-0000),应用后发现只有部分生效,或者都不生效,再检 ...

  6. php excel 设置单元格格式为文本格式

    学习源头:https://www.cnblogs.com/php-linux/p/6179442.html 解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制 ...

  7. Python中用OpenPyXL处理Excel表格 - 单元格格式设置

    官方文档: http://openpyxl.readthedocs.io/en/default/ OpenPyXL库 --单元格样式设置 单元格样式的控制,依赖openpyxl.style包,其中定义 ...

  8. HTML转成Excel设置单元格格式(文本)

    1) 文本:vnd.ms-excel.numberformat:@ 2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd 3) 数字:vnd.ms-excel.numb ...

  9. asp.net使用MVC4框架基于NPOI做导出数据到Excel表

    NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...

随机推荐

  1. SqlMap常用参数(一)

    sqlmap可谓是利用sql注入的神器了,sqlmap的参数很多,接下介绍几种常见的参数. 一.注入access数据库常用的参数 sqlmap.py -u "url"  //判断参 ...

  2. invoke与call

    “调用一个委托实例” 中的 “调用” 对应的是invoke,理解为 “唤出” 更恰当.它和后面的 “在一个对象上调用方法” 中的 “调用” 稍有不同,后则对应的是call.在英语的语境中,invoke ...

  3. 5.13Junit单元测试-反射-注解

    一.Junit单元测试 * 测试分类: 1.黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值 2.白盒测试:需要些代码的.关注程序具体的执行流程 Junit使用:白盒测试 步骤: 1.定义 ...

  4. JavaScript 判断手机端操作系统(Andorid/IOS)

    androidURL = "http://xxx/xxx.apk"; var browser = { versions: function() { var u = navigato ...

  5. eclipse中server 没有tomcat选项

    eclipse集成Tomcat: 打开eclipse - 窗口 - 首选项 - 服务器 - 运行时环境 找到Tomcat然后添加. eclipse添加插件: 开发WEB项目时要集成Tomcat可以并不 ...

  6. 除了Google,你还应该试试的8个搜索引擎

      在信息高速公路上,我们通过浏览器在web的世界里尽情驰骋.想要成为一个好的驾驶员,掌握方向的能力很重要.这很像是Google在我们生活中扮演的角色,通过它可以找到一个又一个的信息宝藏.Google ...

  7. Hbase 简单记录

    进入hbase 客户端命令行: hbase shell 根据rowkey获取单条数据: get 'HXXT_ns:app_test_hbase', 'rowkey值'   范围查询,并指定数据量: s ...

  8. ANN:ML方法与概率图模型

    一.ML方法分类:          产生式模型和判别式模型 假定输入x,类别标签y         -  产生式模型(生成模型)估计联合概率P(x,y),因可以根据联合概率来生成样本:HMMs   ...

  9. MVC POST请求后执行javascript代码

    [HttpPost] public ActionResult PostTest() { //你的业务代码 //...... //要执行的js string js = "window.loca ...

  10. 关于MySQL,Oracle和SQLServer的特点以及之间区别

    关系型数据库:是指采用了关系模型来组织数据的数据库.简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织. 非关系型数据库:非关系型数据库严格上说不是 ...