kod poniżej służy do odczytu zawartości stałej szerokości przesłany plik plik tekstowy za pomocą FileHelpers w ASP .NET MVC2FileHelpers: Jak pominąć pierwszy i ostatni wiersz czyta stały tekst szerokości maksymalnie
Pierwsza i ostatnia linia długości są mniejsze i przyczyny ReadStream wyjątek z tego powodu. Wszystkie pozostałe wiersze mają odpowiednią stałą szerokość. Jak pominąć pierwszą i ostatnią linię lub inny sposób odczytu danych bez wyjątku?
[FixedLengthRecord()]
class Bank
{
[FieldFixedLength(4)]
public string AINETUNNUS;
[FieldFixedLength(16)]
public string TEKST1;
[FieldFixedLength(3)]
public string opliik;
[FieldFixedLength(2)]
public string hinnalis;
};
[AcceptVerbs(HttpVerbs.Post)]
[Authorize]
public ActionResult LoadStatement(HttpPostedFileBase uploadFile)
{
FileHelperEngine engine = new FileHelperEngine(typeof(Bank));
var res = engine.ReadStream(new StreamReader(uploadFile.InputStream,
Encoding.GetEncoding(1257))) as Bank[];
}
Dziękuję. W rzeczywistości pliki mogą mieć dwa różne formaty: stałą szerokość opisaną w pytaniu oraz w formacie rekordowym, gdzie każde pole znajduje się w osobnej linii. Pola są również różne w obu formatach, więc należy użyć dwóch różnych trybów odczytu. Naprawiony format szerokości zawiera zawsze "VV" na początku każdej linii. Jak sprawdzić strumień przed czytaniem i zastosować inny tryb czytania w zależności od formatu? – Andrus
Jak IgnoreFirst/IgnoreLast na żądanie zamiast w klasie? – zerohero
engine.Options.IgnoreFirstLines = 1 – zerohero