прочитать поврежденный файл excel с помощью NPOI

Недавно я задал похожий вопрос, но благодаря людям, прокомментировавшим этот вопрос, я узнал что проблема больше связана с Excel, чем с NPOI, поэтому я удалил этот вопрос и перефразировал его здесь.

Во всяком случае, моя основная проблема изложена в моем предыдущем вопросе. Мне нужно прочитать загруженный .xls-файл с помощью NPOI. Проблема в том, что загруженный мной файл, скорее всего, представляет собой HTML-таблицу, импортированную в документ Excel. Либо так, либо документ excel на самом деле представляет собой .xlsx (MIME?), который был неправильно заархивирован/распакован.

Когда я открываю документ в Excel, я получаю предупреждение о том, что файл может быть поврежден. Нажимаю ок и все работает. Таким образом, файл читается Excel, но не NPOI.

Кто-нибудь знает, что я могу сделать по этому поводу? Или это проигрышное дело?


person Johan Hjalmarsson    schedule 23.06.2014    source источник


Ответы (1)


Я понял!

Поскольку файл .xls на самом деле представляет собой просто html-таблицу, я открыл его блокнотом и увидел, что это html-источник таблицы. Итак, все, что мне нужно было сделать, это сделать парсер для чтения из html-файла в DataTable и продолжить оттуда.

Вот начало (еще не завершил парсер):

private static void HTMLtoExcel(string fileName) //atm, reads the first cell value.
{
    string text = File.ReadAllText(fileName);
    DataTable dt = new DataTable();
    string insert;
    int start = text.IndexOf("<td>");
    int stop = text.IndexOf("</td>");
    insert = text.Substring(start, stop - start);
    insert = insert.Remove(0, 4);
    Console.WriteLine(insert);
}
person Johan Hjalmarsson    schedule 23.06.2014