解决将过长数值数据导出excel时,出现科学技术法

来源:互联网 发布:淘宝抢票卖家靠谱吗 编辑:程序博客网 时间:2024/04/30 00:57

        解决将过长数值数据导出excel时,出现科学技术法

       最近在测试合作版的机房收费系统,在将DataGridView表中的数据导出到Excel时,出现了下面的情况:

 

       经过查证,Excel只支持15位的数字运算,如果超过15位就会被科学计数,可以通过改变单元格格式为文本,那么在将DataGridView中的数据导出时,就应该将数值型数据转化为文本文件,其代码如下:

 

        '定义DataGridView1的行        Dim intRows As Integer        '定义DataGridView1的列        Dim intCols As Integer        '建立Excel        Dim xlApp As New Microsoft.Office.Interop.Excel.Application()        '显示Excel窗口        xlApp.Visible = True        '添加新的工作薄        xlApp.Application.Workbooks.Add()        '*****Excel的表头******          xlApp.Range("A1", "E1").Font.Bold = True                '字体加粗          xlApp.Range("A1", "E1").Font.ColorIndex = 32            '字体颜色蓝色          xlApp.Range("A1", "E1").Font.Size = 25                  '字号25          xlApp.Range("A1", "E1").Merge()        xlApp.Cells(1, 1).value = "学生充值记录"                '表头内容,在第一行,第三列          '*****Excel表内容******          xlApp.Range("A2", "E2").Font.Bold = True               '字体加粗          xlApp.Range("A2", "E2").Font.Size = 14                 '字号          xlApp.Range("A1", "E1").HorizontalAlignment = 3        '指定单元格,水平居中(此处多余)          xlApp.Cells.HorizontalAlignment = 3                    '所有单元格,水平居中          'xlApp.pagesetup.CenterHorizontally = True             '设置页面水平居中          xlApp.Cells.EntireColumn.AutoFit()        Dim cols As Integer                                    '定义col为datagridview1的列        For cols = 1 To DataGridView1.Columns.Count            xlApp.Cells(2, cols) = DataGridView1.Columns(cols - 1).HeaderText        Next        '向Excel中逐条导入数据        For intRows = 0 To DataGridView1.RowCount - 1                        For intCols = 0 To DataGridView1.ColumnCount - 1                If Me.DataGridView1(intCols, intRows).Value Is System.DBNull.Value Then                    xlApp.Cells(intRows + 3, intCols + 1) = ""                Else                    xlApp.Cells(intRows + 3, intCols + 1) = "'" & DataGridView1(intCols, intRows).Value.ToString                End If            Next intCols        Next intRows        xlApp.Cells.EntireColumn.AutoFit()                       '自动调整列宽

        那么在生成Excel每个单元格数据的时候就加一个单引号"'", xlApp.Cells(intRows + 3, intCols + 1) = "'" & DataGridView1(intCols, intRows).Value.ToString这个问题便迎刃而解。

3 0
原创粉丝点击