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
Datagrid Format
Attachment 97161
Excel Result
Attachment 97163
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:
Private Sub ExportExcel(ByVal Dgv As DataGridView, ByVal FileName As String) Dim excelDoc As New StreamWriter(FileName) 'Create the Workbood Header. Const startExcelXML As String = "<?xml version='1.0'?>" + vbCrLf + _ "<Workbook xmlns=""urn:schemas-microsoft-com:office:spreadsheet""" + vbCrLf + _ "xmlns:o=""urn:schemas-microsoft-com:office:office""" + vbCrLf + _ "xmlns:x=""urn:schemas-microsoft-com:office:excel""" + vbCrLf + _ "xmlns:ss=""urn:schemas-microsoft-com:office:spreadsheet"">" + vbCrLf + _ "<Styles>" + vbCrLf + _ "<Style ss:ID=""Default"" ss:Name=""Normal"">" + vbCrLf + _ "<Alignment ss:Vertical=""Bottom""/>" + vbCrLf + _ "<Borders/>" + vbCrLf + _ "<Font/>" + vbCrLf + _ "<Interior/>" + vbCrLf + _ "<NumberFormat/>" + vbCrLf + _ "<Protection/>" + vbCrLf + _ "</Style>" + vbCrLf + _ "<Style ss:ID=""BoldColumn"">" + vbCrLf + _ "<Font x:Family=""Swiss"" ss:Bold=""1""/>" + vbCrLf + _ "</Style>" + vbCrLf + _ "<Style ss:ID=""StringLiteral"">" + vbCrLf + _ "<NumberFormat ss:Format=""@""/>" + vbCrLf + _ "<Alignment ss:Vertical=""Bottom"" ss:WrapText=""1""/>" + vbCrLf + _ "</Style>" + vbCrLf + _ "<Style ss:ID=""Decimal"">" + vbCrLf + _ "<NumberFormat ss:Format=""0.0000""/>" + vbCrLf + _ "</Style>" + vbCrLf + _ "<Style ss:ID=""Integer"">" + vbCrLf + _ "<NumberFormat ss:Format=""0""/>" + vbCrLf + _ "</Style>" + vbCrLf + _ "<Style ss:ID=""DateLiteral"">" + vbCrLf + _ "<NumberFormat ss:Format=""mm/dd/yyyy;@""/>" + vbCrLf + _ "</Style>" + vbCrLf + _ "</Styles>" + vbCrLf '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 & " " 'Const endExcelXML As String = "</Workbook>" 'Create the workbook footer Const endExcelXML As String = "</Workbook>" Dim rowCount As Integer = 0 Dim SheetCount As Integer = 1 'Begin Workbook Output. excelDoc.Write(startExcelXML) excelDoc.Write("<Worksheet ss:Name=""Sheet" + SheetCount.ToString + """>") excelDoc.Write("<Table>" + vbCrLf) 'Set the column widths For Each Column As DataGridViewColumn In Dgv.Columns If Column.Visible = True Then excelDoc.Write("<Column ss:Width=""" + Column.Width.ToString + """/>") End If Next excelDoc.Write("<Row>" + vbCrLf) 'Write the column Headers. For Each column As DataGridViewColumn In Dgv.Columns If column.Visible = True Then excelDoc.Write("<Cell ss:StyleID=""BoldColumn""><Data ss:Type=""String"">") excelDoc.Write(column.HeaderText) excelDoc.Write("</Data></Cell>" + vbCrLf) End If Next excelDoc.Write("</Row>" + vbCrLf) 'Export the DataGrid Row Data. For Each Row As DataGridViewRow In Dgv.Rows rowCount += 1 If rowCount > 64000 Then rowCount = 0 SheetCount += 1 excelDoc.Write("</Table>") excelDoc.Write("</WorkSheet>") excelDoc.Write("<Worksheet ss:Name=""Sheet""" + SheetCount.ToString + ">") End If excelDoc.Write("<Row>") For Each cell As DataGridViewCell In Row.Cells If cell.Visible = True Then Select Case cell.ValueType.Name Case "String" Dim XMLString As String = cell.FormattedValue.ToString XMLString = XMLString.Trim XMLString = XMLString.Replace("&", "&") XMLString = XMLString.Replace(">", ">") XMLString = XMLString.Replace("<", "<") excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">") excelDoc.Write(XMLString) excelDoc.Write("</Data></Cell>") Case "DateTime" Dim XMLDate As DateTime Dim xmlDateString As String = "" If Not IsDBNull(cell.Value) Then XMLDate = CType(cell.Value, Date) xmlDateString = XMLDate.Year.ToString xmlDateString += "-" xmlDateString += CType(IIf(XMLDate.Month < 10, "0" & XMLDate.Month.ToString, XMLDate.Month.ToString), String) xmlDateString += "-" xmlDateString += CType(IIf(XMLDate.Day < 10, "0" & XMLDate.Day.ToString, XMLDate.Day.ToString), String) xmlDateString += "T" xmlDateString += CType(IIf(XMLDate.Hour < 10, "0" & XMLDate.Hour.ToString, XMLDate.Hour.ToString), String) xmlDateString += ":" xmlDateString += CType(IIf(XMLDate.Minute < 10, "0" & XMLDate.Minute.ToString, XMLDate.Minute.ToString), String) xmlDateString += ":" xmlDateString += CType(IIf(XMLDate.Second < 10, "0" & XMLDate.Second.ToString, XMLDate.Second.ToString), String) xmlDateString += ".000" excelDoc.Write("<Cell ss:StyleID=""DateLiteral""><Data ss:Type=""DateTime"">") excelDoc.Write(xmlDateString) excelDoc.Write("</Data></Cell>") Else excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">") excelDoc.Write("") excelDoc.Write("</Data></Cell>") End If Case "Boolean" excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""Number"">") excelDoc.Write(cell.FormattedValue.ToString) excelDoc.Write("</Data></Cell>") Case "Integer", "Int16", "Int32", "Int64" If cell.OwningColumn.CellType.Name = "DataGridViewComboBoxCell" Then Dim XMLString As String = cell.FormattedValue.ToString XMLString = XMLString.Trim XMLString = XMLString.Replace("&", "&") XMLString = XMLString.Replace(">", ">") XMLString = XMLString.Replace("<", "<") excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">") excelDoc.Write(XMLString) excelDoc.Write("</Data></Cell>") ElseIf cell.OwningColumn.CellType.Name = "DataGridViewCheckBoxCell" Then Dim ValueString As String = Nothing Select Case cell.Value.ToString Case "0" ValueString = "False" Case "1" ValueString = "True" Case Else ValueString = "Unknown" End Select excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">") excelDoc.Write(ValueString) excelDoc.Write("</Data></Cell>") Else excelDoc.Write("<Cell ss:StyleID=""Integer""><Data ss:Type=""Number"">") excelDoc.Write(cell.Value) excelDoc.Write("</Data></Cell>") End If Case "Decimal", "Double", "Single" excelDoc.Write("<Cell ss:StyleID=""Decimal""><Data ss:Type=""Number"">") excelDoc.Write(cell.Value) excelDoc.Write("</Data></Cell>") Case "Byte" Dim ValueString As String = Nothing Select Case cell.Value.ToString Case "0" ValueString = "False" Case "1" ValueString = "True" Case Else ValueString = "Unknown" End Select excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">") excelDoc.Write(ValueString) excelDoc.Write("</Data></Cell>") Case "CheckState" Dim ValueString As String = Nothing Select Case cell.Value.ToString Case "0" ValueString = "False" Case "1" ValueString = "True" Case Else ValueString = "Unknown" End Select excelDoc.Write("<Cell ss:StyleID=""StringLiteral""><Data ss:Type=""String"">") excelDoc.Write(ValueString) excelDoc.Write("</Data></Cell>") Case "DBNull" excelDoc.Write("<Cell ss:StyleID=""StringLiteral""></Data ss:Type=""String"">") excelDoc.Write("") excelDoc.Write("</Data></Cell>") Case Else Throw New Exception(cell.ValueType.ToString + ": Not Handled") End Select excelDoc.Write(vbCrLf) End If Next excelDoc.Write("</Row>" + vbCrLf) Next 'Close out the workBook. excelDoc.Write("</Table>" + vbCrLf) excelDoc.Write(" </Worksheet>" + vbCrLf) excelDoc.Write(endExcelXML) excelDoc.Close()
Attachment 97161
Excel Result
Attachment 97163