2

我在我的网站上构建了一个 excel 上传功能。它将使用 OLEDB 读取 excel 数据。问题是用户输入的 excel 文件可以是“真正的”excel 文件,也可以是 html 导入扩展属性中的 excel,因此连接字符串不同。现在我用try catch处理它。如果第一个 conn 字符串产生异常,那么它将打开与 catch 中的另一个连接字符串的连接。

问题是我的领导说我不能使用那种方法。那么有什么方法可以让我在不尝试捕获(任何相关的引发异常)的情况下做到这一点,或者查看 excel 文件是否在 excel 8.0 扩展属性或 html 导入扩展属性中。

try
{
    ...
    try
    {
        connection.ConnectionString = GetConnectionString(pathCopy);
        connection.Open();
    }
    catch
    {
        connection.ConnectionString = GetConnectionStringHTMLEncoded(pathCopy);
        connection.Open();
    }
    ...
catch (Exception ex)
{
    ...
}

谢谢

4

1 回答 1

1

您可以通过在文本编辑器(如记事本)中打开其中一个 html 字符串编码文件来验证文件的内部构成。您应该看到底层文件仍然是 html 文本。您应该能够读取文件的第一行并检查字符串“html”

var reader = System.IO.File.OpenText(pathCopy);
string firstLine = reader.ReadLine();
if (firstLine.IndexOf("html", StringComparison.InvariantCultureIgnoreCase) > 0)
    //some stuff
else
    //other stuff

你不应该在二进制文件上得到错误,你只会在字符串中得到一些非常奇怪的字符——幸运的是,这些字符不包括字符串“html”。

于 2012-10-04T04:30:45.377 回答