Hallo zusammen,
ich exportiere den Inhalt eines DGV nach Excel. Nachdem das mit Interop selbst bei sehr wenigen Daten viel zu lange dauert, mache ich den Umweg über CSV (was zigfach schneller ist).
Der Export des CSV klappt soweit ganz gut. Wenn ich es danach mit Excel öffne, sieht es perfekt aus.
Code:
Nun öffne ich die CSV über Excel-Interop und speichere das File ab:
Wenn ich das Ergebnis nun in Excel speichere, sieht es komplett daneben aus...
Woran kann das liegen? Was mache ich falsch?
Das CSV wird mit ; getrennt und hat die einzelnen Werte noch mit " " ummantelt. Müsste ja soweit eigentlich passen oder?
Wie die Excel, das CSV im Excel und das CSV im Texteditor aussieht hab ich euch angehängt.
Danke für Tipps
LG,
KlyX
ich exportiere den Inhalt eines DGV nach Excel. Nachdem das mit Interop selbst bei sehr wenigen Daten viel zu lange dauert, mache ich den Umweg über CSV (was zigfach schneller ist).
Der Export des CSV klappt soweit ganz gut. Wenn ich es danach mit Excel öffne, sieht es perfekt aus.
Code:
VB.NET-Quellcode
- Dim StrExport As String = ""
- For Each C As DataGridViewColumn In db_data.db_data_report.Columns
- StrExport &= """" & C.HeaderText & """;"
- Next
- StrExport = StrExport.Substring(0, StrExport.Length - 1)
- StrExport &= Environment.NewLine
- For Each R As DataGridViewRow In db_data.db_data_report.Rows
- For Each C As DataGridViewCell In R.Cells
- If Not C.Value Is Nothing Then
- StrExport &= """" & C.Value.ToString & """;"
- Else
- StrExport &= """" & "" & """;"
- End If
- Next
- StrExport = StrExport.Substring(0, StrExport.Length - 1)
- StrExport &= Environment.NewLine
- Next
- Dim tw As System.IO.TextWriter = New System.IO.StreamWriter("test.csv", False, System.Text.Encoding.Default)
- tw.Write(StrExport)
- tw.Close()
Nun öffne ich die CSV über Excel-Interop und speichere das File ab:
VB.NET-Quellcode
- 'CSV in Excel schreiben
- Dim app As Microsoft.Office.Interop.Excel.Application
- Dim wb As Microsoft.Office.Interop.Excel.Workbook
- Dim ws As Microsoft.Office.Interop.Excel.Worksheet
- Dim misValue As Object = System.Reflection.Missing.Value
- app = New Microsoft.Office.Interop.Excel.Application
- wb = app.Workbooks.Open("test.csv")
- ws = wb.Sheets(1)
- ws.SaveAs("test.xlsx", XlFileFormat.xlOpenXMLWorkbook)
- wb.Close()
- app.Quit()
- releaseObject(app)
- releaseObject(wb)
- releaseObject(ws)
- Exit Sub
Wenn ich das Ergebnis nun in Excel speichere, sieht es komplett daneben aus...
Woran kann das liegen? Was mache ich falsch?
Das CSV wird mit ; getrennt und hat die einzelnen Werte noch mit " " ummantelt. Müsste ja soweit eigentlich passen oder?
Wie die Excel, das CSV im Excel und das CSV im Texteditor aussieht hab ich euch angehängt.
Danke für Tipps
LG,
KlyX
Chris' Weblog - Mein Blog rund um Vieles