Hallo
Ich habe folgendes Problem: Ich möchte gerne eine Exceldatei in Windows Forms auslesen aber nur gewisse Zellen (klar bestimmte), danach möchte ich diese dem User anzeigen und ihm die Möglichkeit zur Bearbeitung geben (Text ergänzen etc.) schliesslich werden die einzelne Texte in ein Word übertragen. Das Excel soll bei der ganzen Aktion nicht verändert werden.
Ich bin relativ neu im Vb.net Business und es kann gut sein, dass eine Lösung im Forum zu finden wäre oder das die Lösung extrem einfach ist. Danke für eure Nachsicht
Nun zu meinem Code: Ich kann die Excel Datei einlesen und das richtige "Sheet" per Combobox auswählen und es wird mir auch die ganze Exceltabelle im dgv angezeigt. Leider brauch ich aber nur einige wenige Zellen davon.
Danke schon jetzt für eure Hilfe!!!
Ich habe folgendes Problem: Ich möchte gerne eine Exceldatei in Windows Forms auslesen aber nur gewisse Zellen (klar bestimmte), danach möchte ich diese dem User anzeigen und ihm die Möglichkeit zur Bearbeitung geben (Text ergänzen etc.) schliesslich werden die einzelne Texte in ein Word übertragen. Das Excel soll bei der ganzen Aktion nicht verändert werden.
Ich bin relativ neu im Vb.net Business und es kann gut sein, dass eine Lösung im Forum zu finden wäre oder das die Lösung extrem einfach ist. Danke für eure Nachsicht
Nun zu meinem Code: Ich kann die Excel Datei einlesen und das richtige "Sheet" per Combobox auswählen und es wird mir auch die ganze Exceltabelle im dgv angezeigt. Leider brauch ich aber nur einige wenige Zellen davon.
Danke schon jetzt für eure Hilfe!!!
VB.NET-Quellcode
-
- Dim tables As DataTableCollection
- 'Dateipfad öffnen
- Private Sub btn_ExcelSuchen_Click(sender As Object, e As EventArgs) Handles btn_ExcelSuchen.Click
- ' leeren von Datagridview und Pfadtext
- txt_ExcelDokument.Clear()
- dgv_Angebotspos.Columns.Clear()
- 'Ordner wird geöffnet
- ofd_Excel.Filter = "Excel Files|*.xlsx; *.xls;"
- If ofd_Excel.ShowDialog() = DialogResult.OK Then
- Excel_Einlesen()
- End If
- End Sub
- Private Sub Excel_Einlesen()
- 'Läd die Exceldatei in das DataSet
- txt_ExcelDokument.Text = ofd_Excel.FileName
- Try
- Using Stream = File.Open(ofd_Excel.FileName, FileMode.Open, FileAccess.Read)
- Using reader As IExcelDataReader = ExcelReaderFactory.CreateReader(Stream)
- Dim result As DataSet = reader.AsDataSet(New ExcelDataSetConfiguration() With {
- .ConfigureDataTable = Function(__) New ExcelDataTableConfiguration() With {
- .UseHeaderRow = True}})
- 'Dropdown für die Auswahl des Excel-Blattes (es werden die ersten 5 Blätter angezeigt)
- tables = result.Tables()
- cbx_ExcelBlatt.Items.Clear()
- Dim zaehler As Integer = 0
- For Each table As DataTable In tables
- zaehler += 1
- If zaehler < 6 Then
- cbx_ExcelBlatt.Items.Add(table.TableName)
- End If
- Next
- End Using
- End Using
- Catch ex As Exception
- MessageBox.Show(ex.Message, "Exceldatei kann nicht geladen werden")
- txt_ExcelDokument.Clear()
- dgv_Angebotspos.Columns.Clear()
- dgv_Angebotspos.Rows.Clear()
- End Try
- End Sub
- 'ganzes Excelblatt wird in das dgv geladen
- Private Sub cbx_ExcelBlatt_selectedindexchanged(sender As Object, e As EventArgs) Handles cbx_ExcelBlatt.SelectedIndexChanged
- Dim dt_pos As DataTable = tables(cbx_ExcelBlatt.SelectedItem.ToString())
- dgv_Angebotspos.DataSource = dt_pos
- End Sub