Quantcast
Channel: VBForums - Visual Basic .NET
Viewing all articles
Browse latest Browse all 27355

VS 2010 Datagrid export Excel curreny format problem

$
0
0
Hi,

Thanks for the translation. I have a problem like this has occurred. Turkish currency is different from the transfer is meaningless.grid using decimal format. decimal format when the transfer happens.Help me please. did not try the method

vb Code:
  1. Private Sub ExportExcel(ByVal Dgv As DataGridView, ByVal FileName As String)
  2.         Dim excelDoc As New StreamWriter(FileName)
  3.  
  4.         'Create the Workbood Header.
  5.         Const startExcelXML As String = "<?xml version='1.0'?>" + vbCrLf + _
  6.         "<Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet""" + vbCrLf + _
  7.         "xmlns:o=""urn:schemas-microsoft-com:office:office""" + vbCrLf + _
  8.         "xmlns:x=""urn:schemas-microsoft-com:office:excel""" + vbCrLf + _
  9.         "xmlns:ss=""urn:schemas-microsoft-com:office:spreadsheet"">" + vbCrLf + _
  10.         "<Styles>" + vbCrLf + _
  11.         "<Style ss:ID=""Default"" ss:Name=""Normal"">" + vbCrLf + _
  12.         "<Alignment ss:Vertical=""Bottom""/>" + vbCrLf + _
  13.         "<Borders/>" + vbCrLf + _
  14.         "<Font/>" + vbCrLf + _
  15.         "<Interior/>" + vbCrLf + _
  16.         "<NumberFormat/>" + vbCrLf + _
  17.         "<Protection/>" + vbCrLf + _
  18.         "</Style>" + vbCrLf + _
  19.         "<Style ss:ID=""BoldColumn"">" + vbCrLf + _
  20.         "<Font x:Family=""Swiss"" ss:Bold=""1""/>" + vbCrLf + _
  21.         "</Style>" + vbCrLf + _
  22.         "<Style ss:ID=""StringLiteral"">" + vbCrLf + _
  23.         "<NumberFormat ss:Format=""@""/>" + vbCrLf + _
  24.         "<Alignment ss:Vertical=""Bottom"" ss:WrapText=""1""/>" + vbCrLf + _
  25.         "</Style>" + vbCrLf + _
  26.         "<Style ss:ID=""Decimal"">" + vbCrLf + _
  27.         "<NumberFormat ss:Format=""0.0000""/>" + vbCrLf + _
  28.         "</Style>" + vbCrLf + _
  29.         "<Style ss:ID=""Integer"">" + vbCrLf + _
  30.         "<NumberFormat ss:Format=""0""/>" + vbCrLf + _
  31.         "</Style>" + vbCrLf + _
  32.         "<Style ss:ID=""DateLiteral"">" + vbCrLf + _
  33.         "<NumberFormat ss:Format=""mm/dd/yyyy;@""/>" + vbCrLf + _
  34.         "</Style>" + vbCrLf + _
  35.         "</Styles>" + vbCrLf
  36.  
  37.         'Const startExcelXML As String = "<xml version>" & vbCr & vbLf & "<Workbook " & "xmlns=""urn:schemas-microsoft-com:office:spreadsheet""" & vbCr & vbLf & " xmlns=""urn:schemas-microsoft-com:office:office""" & vbCr & vbLf & " " & "xmlns:x=""urn:schemas- microsoft-com:office:" & "excel""" & vbCr & vbLf & " xmlns:ss=""urn:schemas-microsoft-com:" & "office:spreadsheet"">" & vbCr & vbLf & " <Styles>" & vbCr & vbLf & " " & "<Style ss:ID=""Default"" ss:Name=""Normal"">" & vbCr & vbLf & " " & "<Alignment ss:Vertical=""Bottom""/>" & vbCr & vbLf & " <Borders/>" & vbCr & vbLf & " <Font/>" & vbCr & vbLf & " <Interior/>" & vbCr & vbLf & " <NumberFormat/>" & vbCr & vbLf & " <Protection/>" & vbCr & vbLf & " </Style>" & vbCr & vbLf & " " & "<Style ss:ID=""BoldColumn"">" & vbCr & vbLf & " <Font " & "x:Family=""Swiss"" ss:Bold=""1""/>" & vbCr & vbLf & " </Style>" & vbCr & vbLf & " " & "<Style ss:ID=""StringLiteral"">" & vbCr & vbLf & " <NumberFormat" & " ss:Format=""@""/>" & vbCr & vbLf & " </Style>" & vbCr & vbLf & " <Style " & "ss:ID=""Decimal"">" & vbCr & vbLf & " <NumberFormat " & "ss:Format=""0.0000""/>" & vbCr & vbLf & " </Style>" & vbCr & vbLf & " " & "<Style ss:ID=""Integer"">" & vbCr & vbLf & " <NumberFormat " & "ss:Format=""0""/>" & vbCr & vbLf & " </Style>" & vbCr & vbLf & " <Style " & "ss:ID=""DateLiteral"">" & vbCr & vbLf & " <NumberFormat " & "ss:Format=""mm/dd/yyyy;@""/>" & vbCr & vbLf & " </Style>" & vbCr & vbLf & " " & "</Styles>" & vbCr & vbLf & " "
  38.         'Const endExcelXML As String = "</Workbook>"
  39.  
  40.  
  41.  
  42.  
  43.  
  44.         'Create the workbook footer
  45.         Const endExcelXML As String = "</Workbook>"
  46.  
  47.         Dim rowCount As Integer = 0
  48.         Dim SheetCount As Integer = 1
  49.  
  50.         'Begin Workbook Output.
  51.         excelDoc.Write(startExcelXML)
  52.         excelDoc.Write("<Worksheet ss:Name=""Sheet" + SheetCount.ToString + """>")
  53.         excelDoc.Write("<Table>" + vbCrLf)
  54.  
  55.         'Set the column widths
  56.         For Each Column As DataGridViewColumn In Dgv.Columns
  57.             If Column.Visible = True Then
  58.                 excelDoc.Write("<Column ss:Width=""" + Column.Width.ToString + """/>")
  59.             End If
  60.         Next
  61.  
  62.         excelDoc.Write("<Row>" + vbCrLf)
  63.         'Write the column Headers.
  64.  
  65.         For Each column As DataGridViewColumn In Dgv.Columns
  66.             If column.Visible = True Then
  67.                 excelDoc.Write("<Cell ss:StyleID=""BoldColumn""><Data ss:Type=""String"">")
  68.                 excelDoc.Write(column.HeaderText)
  69.                 excelDoc.Write("</Data></Cell>" + vbCrLf)
  70.             End If
  71.         Next
  72.         excelDoc.Write("</Row>" + vbCrLf)
  73.  
  74.         'Export the DataGrid Row Data.
  75.         For Each Row As DataGridViewRow In Dgv.Rows
  76.             rowCount += 1
  77.             If rowCount > 64000 Then
  78.                 rowCount = 0
  79.                 SheetCount += 1
  80.                 excelDoc.Write("</Table>")
  81.                 excelDoc.Write("</WorkSheet>")
  82.                 excelDoc.Write("<Worksheet ss:Name=""Sheet""" + SheetCount.ToString + ">")
  83.             End If
  84.  
  85.             excelDoc.Write("<Row>")
  86.             For Each cell As DataGridViewCell In Row.Cells
  87.                 If cell.Visible = True Then
  88.                     Select Case cell.ValueType.Name
  89.                         Case "String"
  90.                             Dim XMLString As String = cell.FormattedValue.ToString
  91.                             XMLString = XMLString.Trim
  92.                             XMLString = XMLString.Replace("&", "&amp;")
  93.                             XMLString = XMLString.Replace(">", "&gt;")
  94.                             XMLString = XMLString.Replace("<", "&lt;")
  95.                             excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">")
  96.                             excelDoc.Write(XMLString)
  97.                             excelDoc.Write("</Data></Cell>")
  98.                         Case "DateTime"
  99.                             Dim XMLDate As DateTime
  100.                             Dim xmlDateString As String = ""
  101.                             If Not IsDBNull(cell.Value) Then
  102.                                 XMLDate = CType(cell.Value, Date)
  103.                                 xmlDateString = XMLDate.Year.ToString
  104.                                 xmlDateString += "-"
  105.                                 xmlDateString += CType(IIf(XMLDate.Month < 10, "0" & XMLDate.Month.ToString, XMLDate.Month.ToString), String)
  106.                                 xmlDateString += "-"
  107.                                 xmlDateString += CType(IIf(XMLDate.Day < 10, "0" & XMLDate.Day.ToString, XMLDate.Day.ToString), String)
  108.                                 xmlDateString += "T"
  109.                                 xmlDateString += CType(IIf(XMLDate.Hour < 10, "0" & XMLDate.Hour.ToString, XMLDate.Hour.ToString), String)
  110.                                 xmlDateString += ":"
  111.                                 xmlDateString += CType(IIf(XMLDate.Minute < 10, "0" & XMLDate.Minute.ToString, XMLDate.Minute.ToString), String)
  112.                                 xmlDateString += ":"
  113.                                 xmlDateString += CType(IIf(XMLDate.Second < 10, "0" & XMLDate.Second.ToString, XMLDate.Second.ToString), String)
  114.                                 xmlDateString += ".000"
  115.                                 excelDoc.Write("<Cell ss:StyleID=""DateLiteral""><Data ss:Type=""DateTime"">")
  116.                                 excelDoc.Write(xmlDateString)
  117.                                 excelDoc.Write("</Data></Cell>")
  118.                             Else
  119.                                 excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">")
  120.                                 excelDoc.Write("")
  121.                                 excelDoc.Write("</Data></Cell>")
  122.                             End If
  123.                         Case "Boolean"
  124.                             excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""Number"">")
  125.                             excelDoc.Write(cell.FormattedValue.ToString)
  126.                             excelDoc.Write("</Data></Cell>")
  127.                         Case "Integer", "Int16", "Int32", "Int64"
  128.                             If cell.OwningColumn.CellType.Name = "DataGridViewComboBoxCell" Then
  129.                                 Dim XMLString As String = cell.FormattedValue.ToString
  130.                                 XMLString = XMLString.Trim
  131.                                 XMLString = XMLString.Replace("&", "&amp")
  132.                                 XMLString = XMLString.Replace(">", "&gt")
  133.                                 XMLString = XMLString.Replace("<", "&lt")
  134.                                 excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">")
  135.                                 excelDoc.Write(XMLString)
  136.                                 excelDoc.Write("</Data></Cell>")
  137.                             ElseIf cell.OwningColumn.CellType.Name = "DataGridViewCheckBoxCell" Then
  138.                                 Dim ValueString As String = Nothing
  139.                                 Select Case cell.Value.ToString
  140.                                     Case "0"
  141.                                         ValueString = "False"
  142.                                     Case "1"
  143.                                         ValueString = "True"
  144.                                     Case Else
  145.                                         ValueString = "Unknown"
  146.                                 End Select
  147.                                 excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">")
  148.                                 excelDoc.Write(ValueString)
  149.                                 excelDoc.Write("</Data></Cell>")
  150.                             Else
  151.                                 excelDoc.Write("<Cell ss:StyleID=""Integer""><Data ss:Type=""Number"">")
  152.                                 excelDoc.Write(cell.Value)
  153.                                 excelDoc.Write("</Data></Cell>")
  154.                             End If
  155.                         Case "Decimal", "Double", "Single"
  156.                             excelDoc.Write("<Cell ss:StyleID=""Decimal""><Data ss:Type=""Number"">")
  157.                             excelDoc.Write(cell.Value)
  158.                             excelDoc.Write("</Data></Cell>")
  159.                         Case "Byte"
  160.                             Dim ValueString As String = Nothing
  161.                             Select Case cell.Value.ToString
  162.                                 Case "0"
  163.                                     ValueString = "False"
  164.                                 Case "1"
  165.                                     ValueString = "True"
  166.                                 Case Else
  167.                                     ValueString = "Unknown"
  168.                             End Select
  169.                             excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">")
  170.                             excelDoc.Write(ValueString)
  171.                             excelDoc.Write("</Data></Cell>")
  172.                         Case "CheckState"
  173.                             Dim ValueString As String = Nothing
  174.                             Select Case cell.Value.ToString
  175.                                 Case "0"
  176.                                     ValueString = "False"
  177.                                 Case "1"
  178.                                     ValueString = "True"
  179.                                 Case Else
  180.                                     ValueString = "Unknown"
  181.                             End Select
  182.                             excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">")
  183.                             excelDoc.Write(ValueString)
  184.                             excelDoc.Write("</Data></Cell>")
  185.                         Case "DBNull"
  186.                             excelDoc.Write("<Cell ss:StyleID=""StringLiteral""></Data ss:Type=""String"">")
  187.                             excelDoc.Write("")
  188.                             excelDoc.Write("</Data></Cell>")
  189.                         Case Else
  190.                             Throw New Exception(cell.ValueType.ToString + ": Not Handled")
  191.                     End Select
  192.                     excelDoc.Write(vbCrLf)
  193.                 End If
  194.             Next
  195.             excelDoc.Write("</Row>" + vbCrLf)
  196.         Next
  197.  
  198.         'Close out the workBook.
  199.         excelDoc.Write("</Table>" + vbCrLf)
  200.         excelDoc.Write(" </Worksheet>" + vbCrLf)
  201.         excelDoc.Write(endExcelXML)
  202.         excelDoc.Close()
Datagrid Format
Attachment 97161

Excel Result

Attachment 97163
Attached Images
   

Viewing all articles
Browse latest Browse all 27355

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>