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

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

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

解决将过长数值数据导出excel时,出现科学技术法_第1张图片

 解决将过长数值数据导出excel时,出现科学技术法_第2张图片

       经过查证,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这个问题便迎刃而解。

你可能感兴趣的:(解决将过长数值数据导出excel时,出现科学技术法)