首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

vb.net datagridview 导出数据 身份号最后四位都是0解决办法

2012-04-24 
vb.net datagridview 导出数据 身份号最后四位都是0vb.net datagridview 导出数据,身份证号后四位都是0,并

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才能用 百度一下 大把材料
[解决办法]
在循环结束后,再加一行,身份证号的值为“-”(不含双引号)

热点排行