Ich lese ein OfficeOpenXml.ExcelWorksheet und die ArgumentOufOfRangeException in der Mitte der Sammlung.C# ArgumentOutOfRangeException beim Lesen von ExcelWorksheet
Ich lese so process.Information = sheet.Cells[line, i++].Text;
. Auf dieser Linie i = 22
während der sheet.Dimension.Column = 28
.
Wenn ich das Debuggen und aufzuzählen, die Sammlung, die ich sehe, dass die Ausnahme für das Verfahren ausgelöst wird .Text
während die .Value
Methode wird den richtigen Wert zeigt.
Nach der Ausnahmestapelüberwachung, wird die Ausnahme von der ---- EDIT System.Text.StringBuilder.Insert() Methode
geworfen - - Nach der angenommenen Antwort wurde mir klar, dass das Problem nicht nur beim Lesen liegt. Ich beantworte die gleiche Datei mit einer zusätzlichen Spalte (Import-Erfolg oder Erfolg) und während ich die Blatt-Formatierung mache bekomme ich wieder den gleichen Fehler, alles wegen der Methode System.Text.StringBuilder.Insert(). Ich versuche, eine Spalte AutoFit sheet.Column(22).AutoFit()
Dies ist der Stack-Trace
at System.Text.StringBuilder.Insert(Int32 index, Char* value, Int32 valueCount)
at System.Text.StringBuilder.Insert(Int32 index, Char value)
at OfficeOpenXml.Style.XmlAccess.ExcelNumberFormatXml.ExcelFormatTranslator.ToNetFormat(String ExcelFormat, Boolean forColWidth)
at OfficeOpenXml.Style.XmlAccess.ExcelNumberFormatXml.ExcelFormatTranslator..ctor(String format, Int32 numFmtID)
at OfficeOpenXml.Style.XmlAccess.ExcelNumberFormatXml.get_FormatTranslator()
at OfficeOpenXml.ExcelRangeBase.GetFormattedText(Boolean forWidthCalc)
at OfficeOpenXml.ExcelRangeBase.get_TextForWidth()
at OfficeOpenXml.ExcelRangeBase.AutoFitColumns(Double MinimumWidth, Double MaximumWidth)
at OfficeOpenXml.ExcelRangeBase.AutoFitColumns(Double MinimumWidth)
at OfficeOpenXml.ExcelRangeBase.AutoFitColumns()
at OfficeOpenXml.ExcelColumn.AutoFit()
at SkiptraceAPI.Models.ProcessosRepository.formatExcel(ExcelPackage package, Boolean addValidation) in
Dies sieht wie ein Fehler in der Implementierung in Bezug auf die Verarbeitung des Stils Ihrer Zelle aus. Versuchen Sie 'process.Information = sheet.GetValue (line, i ++)' stattdessen. –
dasblinkenlight
Was wäre das Problem beim Lesen der Value-Eigenschaft? Brauchen Sie eigentlich die Eigenschaft '.Text'? Ich habe für einige Beispiele gegoogelt und ich sehe, dass "Value" viel anstelle von "Text" verwendet wird. Kann die Dokumentation für das von Ihnen verwendete Paket nicht wirklich finden, aber ist 'Text' nicht eine spezielle Eigenschaft? –
Eigentlich weiß ich nicht, ob ein Problem mit '.Value' anstatt' .Text' auftritt. Das ist alter Code und ich kann mich nicht erinnern, warum ich diesen Weg gewählt habe (aber es muss ein Grund gewesen sein). Dieser Code hat immer funktioniert und der Kunde meldet diesen Fehler zum ersten Mal. Ich denke, ich werde es stattdessen in ".Value" ändern, aber ich will nur das Problem verstehen ... – NunoRibeiro