2

Web で Excel アップロード機能を構築しています。OLEDBを使用してExcelデータを読み取ります。問題は、ユーザーが入力したExcelファイルが「実際の」ExcelファイルまたはHTMLインポート拡張プロパティのExcelのいずれかである可能性があるため、接続文字列が異なることです。今はtry catchで処理しています。最初の conn 文字列が例外を生成すると、catch で他の接続文字列との接続が開かれます。

問題は、私の主任が、そのような方法は使えないと言っていることです。try 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 文字列でエンコードされたファイルの 1 つをテキスト エディター (メモ帳など) で開きます。基になるファイルがまだ 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 に答える