質問

さて、これが理にかなっているかどうか見てみましょう。

Excelファイルを解析するプログラムを作成しましたが、問題なく動作します。以下を使用してファイルに入ります。

string FileToConvert = Server.MapPath(".") + "\\App_Data\\CP-ARFJN-FLAG.XLS";
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FileToConvert + ";Extended Properties=Excel 8.0;";
OleDbConnection connection = new OleDbConnection(connectionString);
connection.Open();
//this next line assumes that the file is in default Excel format with Sheet1 as the first sheet name, adjust accordingly
OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [CP-ARFJN-FLAG$]", connection);

これは問題なく機能します。しかし、実際のファイルで試してみると(別のプログラムから提供されます)、次のエラーが表示されます。

System.Data.OleDb.OleDbException: External table is not in the expected format. at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.OleDb.OleDbConnection.Open() at wetglobe.Page_Load(Object sender, EventArgs e)

しかし、ここに問題があると思います。そのファイルを取得してローカルのExcelで保存すると、最初に次のポップアップが表示されます。

  

CP-ARFJN-FLAG.XLSには機能が含まれる場合があります   テキストと互換性がない(タブ   区切り)。維持しますか   この形式のワークブック?

     
      
  • この形式を維持するには、   互換性のない機能があれば、クリックします   はい。
  •   
  • 機能を保持するには、[いいえ]をクリックします。   最新のExcelでコピーを保存する10   形式。
  •   
  • 失われる可能性のあるものを確認するには、をクリックします   ヘルプ。
  •   

[いいえ]をクリックして、現在のExcel形式として保存すると、プログラムは正常に動作します。

だから、これはいくつかのクレイジーな古いExcel形式で保存されていると思いますか?

質問は次のようになります:

  • Excelのバージョンを確認する方法 これを保存しましたか?
  • どのように現在の状態で解析できますか 状態?
  • -または-プログラムで新しいバージョンとして保存できますか?

それが明確であることを願っています...ありがとうございます。

役に立ちましたか?

解決

サードパーティのアプリによって生成されたXLSファイルは、実際にはExcel形式ではないようです。実際には、拡張子が.xlsのタブ区切りテキストファイルである可能性があります。

テキストエディタで開いてみてください。

タブ区切りの場合、OleDBアダプターを捨てて、標準のテキストファイルとして開く/解析することができます。

他のヒント

生成されたファイルの形式が将来変更される可能性がある場合(サードパーティアプリをアップグレードする場合など)、 Officeプライマリ相互運用機能アセンブリ。これらは、Excelによって生成されたファイルのバージョンまたは形式を読み込みます。欠点は、サーバーにOfficeをインストールする必要があることです。

iは問題を解決しました。 Excelファイルは、MS EXCEL 2007の「97-2003として保存」ではなく、MS EXCEL 2003で生成する必要があります。 そのため、任意のソースからファイルをダウンロードする必要があります。次に、データを手動でシートにコピーします。うまくいきました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top