Kraft EPPLUS zu Lesen als text

Ich bin die Entwicklung einer Anwendung zum Lesen von xlsx-Dateien, einige Validierung und einfügen in die Datenbank. Leider, wenn ich versuche zu Lesen, Spalten markiert, die als numerische (fe-mit EAN-13-codes), habe ich miniumum Wert einer int.
Der Benutzer muss dies nicht sehen, da zeigt Excel es richtig.

Wie kann ich es machen das Lesen der Datei als text? Ich weiß, dass ich verwenden können, OLEBD für Sie, aber ich brauche auch die Datei Bearbeiten dynamisch, so epplus ExcelPackage ist die beste Wahl.

Hier ist der code im Einsatz:

 FileInfo file = new FileInfo(path);
 MainExcel = new OfficeOpenXml.ExcelPackage(file);
 {
   var ws = MainExcel.Workbook.Worksheets.First();
   DataTable tbl = new DataTable();
        for (var rowNum = 1; rowNum <= ws.Dimension.End.Row; rowNum++)      //currently loading all file
                {
                    var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column];
                    var row = tbl.NewRow();
                    foreach (var cell in wsRow)
                    {
                        row[cell.Start.Column - 1] = cell.Text;
                    }
                    tbl.Rows.Add(row);
                }          
 }

und das ist, wie ich auflisten Spalten

   foreach (var firstRowCell in ws.Cells[3, 1, 3, ws.Dimension.End.Column])
                {
                    System.Type typeString = System.Type.GetType("System.String") ;
                    tbl.Columns.Add( firstRowCell.Text , typeString );
                }

Für Menschen, die es betreffen könnte, hier ist die Datei (funktioniert auch für nicht-google-Nutzer):
https://drive.google.com/open?id=0B3kIzUcpOx-iMC1iY0VoLS1kU3M&authuser=0

Bemerkte ich, dass ExcelRange.value-Eigenschaft ist ein array und enthält alle Objekte, die unformatiert ist. Aber sobald Sie Durchlaufen die Zellen in ExcelRange und Anfrage Zelle.Text-Eigenschaft, die es bereits bearbeitet wurde. Versucht zu ändern ConditionalFormatting und DataValidation in ExcelRange nicht hilft (f.e. AddContainsText()) - @EDIT--> Weder für ein ganzes Blech 🙁

Ich würde es vorziehen, NICHT zu wirken ExcelRange.Wert als Array, es ist hässlich und sehr bedingt.

  • Können Sie mir bitte sagen, wie ist die Spalte markiert, die als numerische?
  • Ich bearbeitet die Frage, immer noch keine Idee, wie Sie dies richtig tun.
  • Wo ist es, du liest die Zelle, die coming-out als int.MinValue? Ich sehe die eine Zeile, wo Sie row[...] = cell.Text, aber das Text Eigenschaft als string. Ich kann mich nicht erinnern, dass es ein Objekt.
  • Das ist das problem, das ich nicht bin. Ich denke, es ist die Epplus preconverting die Zellen bevor ich jemals die chance bekommen, Lesen Sie Sie richtig. Und Zelle.Text ist string. Doch ich erhalte -2147483648 1/ für jeden einzelnen Wert größer als 4 bilions
  • Ist es möglich post eine kleine Probe .xlsx-Datei mit einem sample der Daten, die erzeugt das Problem (oder vielleicht erklären, wie das zu neu?). Kann nicht scheinen, um das Problem zu reproduzieren...
  • Sicher, ich bearbeitet die Frage.

InformationsquelleAutor Luntri | 2015-04-03
Schreibe einen Kommentar