用NPOI读取损坏的excel文件

时间:2014-06-23 06:00:32

标签: c# excel xlsx corrupt npoi

我最近问过一个similar问题,但感谢那些对这个问题发表评论的人,我了解到问题更多的是excel而非NPOI,所以我删除了这个问题,并在此重述。

无论如何,我的主要问题已在我之前的问题中说明。我需要使用NPOI读取下载的.xls文件。问题是我下载的文件很可能是导入到Excel文档的HTML表。或者,excel文档实际上是一个错误地压缩/解压缩的.xlsx(MIME?)。

当我在excel中打开文档时,我收到一条警告,说该文件可能已损坏。我按"确定"一切正常。显然文件可以被excel读取,但不是NPOI。

有谁知道我能做些什么呢?或者这是一个失败的原因?

1 个答案:

答案 0 :(得分:1)

我明白了!

由于.xls文件实际上只是一个html表,我用记事本打开它,看到它是一个表的html-source。所以我所要做的就是让解析器从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);
}