Konvertieren Sie Excel-Bereich zu ADO.NET DataSet-oder DataTable, etc
Ich habe eine Excel-Tabelle, die sitzen auf einem Netzwerk-Laufwerk freigeben. Es muss aufgerufen werden, indem Sie meine Winforms C# 3.0-Anwendung (viele Anwender könnten mit der app und schlagen diese Tabelle zur gleichen Zeit). Es gibt eine Menge von Daten auf einem Arbeitsblatt. Diese Daten sind aufgeschlüsselt in die Bereiche, die ich genannt habe als reicht. Ich muss in der Lage sein, um Zugriff auf diese Bereiche individuell, kehren Sie jeden Bereich als ein dataset, und dann binden Sie es an ein Netz.
Ich habe Beispiele gefunden, dass die Verwendung von OLE-und haben diese zu arbeiten. Allerdings habe ich einige Warnungen über die Verwendung dieser Methode, plus bei der Arbeit haben wir bereits mit Microsoft.Office.Interop.Excel als standard so weit. Ich nicht wirklich wollen, zu verwerfen, es sei denn ich muss. Die Benutzer werden mithilfe von Office 2003 auf bis, soweit ich weiß.
Bekomme ich die Palette brauche ich mit dem folgenden code:
MyDataRange = (Microsoft.Office.Interop.Excel.Range)
MyWorkSheet.get_Range("MyExcelRange", Type.Missing);
OLE Weg war schön, das wäre meine erste Zeile und schalten Sie diese in Spalten. Meine Bereiche (12) sind zum größten Teil Verschieden von einander in Anzahl der Spalten. Wusste nicht, ob diese info würde Auswirkungen auf alle Empfehlungen.
Gibt es eine Möglichkeit zur Verwendung von Interop und um die zurückgegebenen Bereich wieder in ein dataset?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weiß ich nicht über eine eingebaute Funktion, aber es sollte nicht schwierig sein, es selbst schreiben. Pseudocode:
Ich weiß nicht, welchen Datentyp Sie haben.Aber für einen excel-Daten, wie in diesem link http://www.freeimagehosting.net/image.php?f8d4ef4173.png, können Sie den folgenden code zum laden der Daten in die Tabelle.
Es lohnt sich, einen Blick auf NPOI, wenn es um Lesen/schreiben von Excel 2003 XLS-Dateien. NPOI ist ein life saver.
Ich denke, Sie haben Durchlaufen Sie Ihre Auswahl und erstellen von DataRows in deiner DataTable.
Diese Frage auf StackOverflow bietet weitere Ressourcen:
Erstellen Sie Excel - (.XLS-und .XLSX) - Datei aus C#
Diese Methode nicht gut funktioniert, wenn die gleiche Spalte in der excel-Tabelle enthält sowohl text als auch zahlen. Zum Beispiel, wenn
Range("A3")=Hello
undRange("A7")=5
dann liest es nur Hallo und der Wert fürRange("A7")
istDBNULL