读书人

vb.net datagridview 导出数据 身份号

发布时间: 2012-04-24 14:15:38 作者: rapoo

vb.net datagridview 导出数据 身份号最后四位都是0
vb.net datagridview 导出数据,身份证号后四位都是0,并且含有数字的第一个0被截取,如:011变成11,希望高手可以解决下,谢谢!
Public Function DataSave(ByVal dgv As DataGridView) As Boolean
Dim sfd As New SaveFileDialog
sfd.Filter = "Excel文件(*.csv)|*.csv|Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*"
'sfd.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*"
sfd.FilterIndex = 1
sfd.Title = "导出到Excel"
sfd.InitialDirectory = "d:/"
sfd.RestoreDirectory = False
If sfd.ShowDialog = DialogResult.OK Then
Dim fs As New IO.FileStream(sfd.FileName, IO.FileMode.Create)
Dim sw As New IO.StreamWriter(fs, System.Text.Encoding.Unicode)
Dim title As String = ""
Dim i As Integer
'写列标题
For i = 0 To dgv.ColumnCount - 1
title = dgv.Columns(i).HeaderText
sw.Write(title)
If i <> dgv.ColumnCount - 1 Then
sw.Write(controlchars.tab)
End If
Next
sw.WriteLine("")
'写内容
Dim x As Integer
Dim y As Integer
For x = 0 To dgv.RowCount - 1
For y = 0 To dgv.ColumnCount - 1
If dgv.Rows(x).Cells(y).Value Is DBNull.Value Then
sw.Write("")
Else
sw.Write(dgv.Rows(x).Cells(y).Value)
End If
If y <> dgv.ColumnCount - 1 Then
sw.Write(controlchars.tab)
End If
Next
sw.WriteLine("")
sw.Flush()
Next
fs.Close()
MessageBox.Show("导出成功", "提示")
End If
End Function

[解决办法]
被转为数字了,导出时加一个单引号 '011
[解决办法]
你使用 sw.Write(title) 的形式 根本就是按照文本 来保存的

只不过后缀是 xls 而已,强制用excal打开 必然会出问题

一般有2个方式
1、 按照数据区的方法去保存 使用 oledata 那种 优点是 不用安装office 没有版本问题 缺点是 某些情况下控制不精确 ,也会有 000 或者e的问题

2、使用office.Excel 控件 这个必须安装office才能用 百度一下 大把材料
[解决办法]
在循环结束后,再加一行,身份证号的值为“-”(不含双引号)

读书人网 >VB Dotnet

热点推荐