Data Formatted in datagrid is exported to excel in unformatted manner

南楼画角 提交于 2020-01-05 04:22:07

问题


I need your guidance/help in this question. I have data formatted in the data grid view in this format 00-00-00-00-00-000. But when i am exporting this data to excel sheet , this formatting is gone and data is in this form- 0000000000000. The formatting is gone in excel. I have written in vb.net. Please provide me help\solution in this matter.


回答1:


You could set the style of the required cells to something along the lines of: NumberFormat

 Imports Excel = Microsoft.Office.Interop.Excel

 Public Class Form1
     Dim ExcelApp As Excel.Application
     Dim ExcelWorkBk As Excel.Workbook
     Dim ExcelWorkSht As Excel.Worksheet

 Public Function exportToExcel(ByVal dgv As DataGridView)
    Try
        exportToExcel = True
        ExcelApp = New Excel.Application
        ExcelWorkBk = ExcelApp.Workbooks.Add()
        ExcelWorkSht = ExcelWorkBk.Sheets("Sheet1")

        ''// Rename the sheet
        ExcelWorkSht.Name = "MySheet"
        ExcelWorkSht.Tab.ThemeColor = Excel.XlThemeColor.xlThemeColorAccent1

        Dim style As Excel.Style = ExcelWorkSht.Application.ActiveWorkbook.Styles.Add("StyleName")
        style.Font.Bold = True
        style.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.LightGreen)
        style.NumberFormat = format

        Dim styleHeader As Excel.Style = ExcelWorkSht.Application.ActiveWorkbook.Styles.Add("Header")
        styleHeader.Font.Bold = True
        styleHeader.ShrinkToFit = True
        styleHeader.Orientation = Excel.XlOrientation.xlHorizontal
        styleHeader.VerticalAlignment = Excel.XlVAlign.xlVAlignJustify
        styleHeader.WrapText = False
        styleHeader.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.WhiteSmoke)

        ''// get all visible columns in display index order
        Dim ColNames As List(Of String) = (From col As DataGridViewColumn _
                                           In dgv.Columns.Cast(Of DataGridViewColumn)() _
                                           Where (col.Visible = True) _
                                           Order By col.DisplayIndex _
                                           Select col.Name).ToList

        Dim colcount = 0
        For Each s In ColNames
            colcount += 1

            ExcelWorkSht.Cells(1, colcount) = dgv.Columns.Item(s).HeaderText
            ExcelWorkSht.Cells(1, colcount).style = "Header"
        Next

        ''// get the values and formatt them

        For rowcount = 0 To dgv.Rows.Count - 1  ''// for each row
            colcount = 0
            For Each s In ColNames ''// for each column
                colcount += 1
                ''xlWorkSheet.Cells(rowcount + 2, colcount) = dgv.Rows(rowcount).Cells(s).Value
                ExcelWorkSht.Cells(rowcount + 2, colcount) = dgv.Rows(rowcount).Cells(s).FormattedValue
                If colcount = 4 Then ''// current Column by it's Index
                    If dgv.Rows(rowcount).Cells(s).FormattedValue = 1 Then
                        ''//  formatt this column with the style 'StyleName'
                        ExcelWorkSht.Cells(rowcount + 2, colcount).Style = "StyleName"
                    End If
                End If
            Next
        Next

        ExcelWorkSht.Range("$D$1:$D$100").AutoFilter(Field:=1, Criteria1:="", Operator:=Excel.XlAutoFilterOperator.xlFilterAutomaticFontColor)

        MsgBox("Exported successfully to Excel")
        ExcelApp.Visible = True
    Catch ex As Exception
        exportToExcel = False
        MsgBox(ex.Message, MsgBoxStyle.Exclamation)
    End Try


End Function


来源:https://stackoverflow.com/questions/15366340/data-formatted-in-datagrid-is-exported-to-excel-in-unformatted-manner

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!