vb.net导出datagrid为excel某些列数据格式丢失

我正在使用vb.net生成一个数据网格,并基于datagrid我有一个函数允许用户导出到excel的datagrid值。 奇怪的是我的一个string列值很奇怪:

(1)datagrid结果:

在这里输入图像说明

(2)仅在导出之后 – BQ SEGMENT数据与数据网格中的数据不同:

在这里输入图像说明

(3)我将“BQ SEGMENT”的单元格格式改为一般或文本 – 结果也是奇怪和错误的

在这里输入图像说明

我的代码导出为Excel:

Dim xlApp As Excel.Application Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet Dim misValue As Object = System.Reflection.Missing.Value Dim i As Integer Dim j As Integer xlApp = New Microsoft.Office.Interop.Excel.ApplicationClass xlWorkBook = xlApp.Workbooks.Add(misValue) xlWorkSheet = xlWorkBook.Sheets("sheet1") For i = 0 To DataGridView1.RowCount - 2 For j = 0 To DataGridView1.ColumnCount - 1 For k As Integer = 1 To DataGridView1.Columns.Count xlWorkSheet.Cells(1, k) = DataGridView1.Columns(k - 1).HeaderText xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString() Next Next Next Dim saveFileDialog1 As New SaveFileDialog saveFileDialog1.Filter = "Excel File|*.xlsx" saveFileDialog1.Title = "Save an Excel File" saveFileDialog1.ShowDialog() xlApp.ScreenUpdating = True xlApp.Visible = False If Not saveFileDialog1.FileName.Equals("") Then xlApp.DisplayAlerts = False xlWorkSheet.SaveAs(saveFileDialog1.FileName) MsgBox("The data has been successfully export as excel file.") End If xlWorkBook.Close() xlApp.Quit() xlApp = Nothing releaseObject(xlApp) releaseObject(xlWorkBook) releaseObject(xlWorkSheet) 

是由代码造成的错误?

你原来的date格式很奇怪。 我猜1988 / 03-1是1988年1月3日? 所以基本上你的问题不是数据本身,而是在Excel中的格式。 你的第三个例子显示了Excel如何在内部表示date,十进制值是1.0是1900年1月1日,从那以后每天增加1。 数字的小数部分(小数点后面)包含时间信息(数据不包含)。

无论如何,如果您要右键单击该date列并select“格式化单元格…”,您将能够指定您希望使用date的格式。 这将从一个用户/机器到下一个不同。 另一个select是,在导出循环中,使用您指定的格式将date列的值parsing为string,然后修改值使Excel将值视为string,而不是DateTime(added =并用双引号括起来):

 xlWorkSheet.Cells(i + 2, j + 1) = _ DateTime.Parse(DataGridView1(j, i).Value.ToString()) _ .ToString("=""yyyy/dd-M""")