【问题标题】:Read excel using OLEDB使用 OLEDB 读取 excel
【发布时间】:2012-10-04 12:30:45
【问题描述】:

我正在我的网站上构建一个 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)
{
    ...
}

谢谢

【问题讨论】:

  • 你能展示你的 try/catch 块吗?

标签: c#


【解决方案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”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多