- PR -

xmlスプレッドシート形式のファイルが開けない

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2009-03-03 19:58
引用:

まなかさんの書き込み (2009-03-02 12:10) より:

そこで、拡張子を「*.xml」に変更し、Openxmlメソッドに変えてみましたが、同様のエラーでした。

引用:

まなかさんの書き込み (2009-03-03 09:13) より:

遅延バインディングでなく、事前バインディングでもエラーになります。


失礼しました。 事前バインディングで試しているのはわかっていたのですが、OpenXML メソッドと '併用' してダメだったのか確認したかったのでした。

事前バインディング + OpenXML メソッドでもダメだったのであれば、そもそも Excel 12.0 に対応している形式なのか疑いたくなりますね。 拡張子を .xml にしてエクスプローラから EXCEL.EXE の関連起動で正しく起動できるかを確認してみて頂けますか? これで開けなければそもそも無理だということになります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まなか
常連さん
会議室デビュー日: 2008/04/17
投稿数: 37
投稿日時: 2009-03-03 20:53
じゃんぬねっとさん、ありがとうごさいます。

拡張子と中身が不一致、というメッセージが出るだけで開くことができます…
ということで、今回はあきらめることにします…

皆様のシステムではxmlスプレッドシート形式のファイルを読み込むことが
ないんですね…ググってみても、同じエラーが出てこないんです。

ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2009-03-03 22:33
引用:

まなかさんの書き込み (2009-03-02 09:29) より:

ファイルの種類:XMLスプレッドシート2003(*.xml)で作成されたExcelファイルを指定すると以下のエラーが出ます。

サーバーによって例外が返されました。 (HRESULT からの例外: 0x80010105 (RPC_E_SERVERFAULT))
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。

例外の詳細: System.Runtime.InteropServices.COMException: サーバーによって例外が返されました。 (HRESULT からの例外: 0x80010105 (RPC_E_SERVERFAULT))

ソース エラー:

xlBooks = xlApp.Workbooks
Try
xlBook = xlBooks.Open(importFile) ←ここが赤くなっています。

取り込むファイルの拡張子は「xls」なのですが、ファイルの種類が「xml」です。
一旦開いて「Microsoft Excel97-Excel 2003 および5.0/95ブック(*.xls)」で保存しなおしたファイルは正常に処理できます。

サーバーは2003Serverで、Excel2007です。
Excel2003の時はエラーになりませんでした。
ちなみに、Windows XPのクライアントマシンにIISを立てて同じようにExcel2007にした場合はエラーになりません。



Excel 2003 で作成したファイルを、Excel 2007 で読み込もうとしている、、、のでしょうか?
ファイルをテキスト エディタで開いて、1行目2行目あたりに、Excel のバージョンを特定するような要素が含まれていないか、確認してみてください。

あと、Open メソッドの引数に、なにか互換性に関するフラグがあったりしませんかね?
まなか
常連さん
会議室デビュー日: 2008/04/17
投稿数: 37
投稿日時: 2009-03-04 09:10
Jittaさん、ありがとうございます。

引用:

Jittaさんの書き込み (2009-03-03 22:33) より:
Excel 2003 で作成したファイルを、Excel 2007 で読み込もうとしている、、、のでしょうか?
ファイルをテキスト エディタで開いて、1行目2行目あたりに、Excel のバージョンを特定するような要素が含まれていないか、確認してみてください。

あと、Open メソッドの引数に、なにか互換性に関するフラグがあったりしませんかね?



作成ファイルはExcel2003かどうかはわかりませんが、Excel2007で読み込もうとしています。

Openメソッドの引数、調べてみます。

テキストエディタで開いたところ、バージョンを示すようなものは見当たりませんでした。
コード:

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">



[ メッセージ編集済み 編集者: まなか 編集日時 2009-03-04 09:49 ]
デューン
大ベテラン
会議室デビュー日: 2004/04/21
投稿数: 174
お住まい・勤務地: Tokyo
投稿日時: 2009-03-04 11:47
参考までに、いろいろ試してみました。

ファイルはOffice2007から2003スプレッド形式(xml)で出力しました。
C:\Book1.xml
(パターン毎に拡張子のみを変更しています)


<環境1.WinXP>
A.Excel2007 にドロップして直接開いた場合

Book1.xmlの場合→警告なく正常に開く
Book1.xlsに拡張子を変更した場合→拡張子が違う旨の警告がでる

B.Excel2007 のマクロエディタのイミディエイトウィンドウで以下を実行

Application.Workbooks.Open("C:\Book1.xml") →警告なく正常に開く
> 拡張子を変更
Application.Workbooks.Open("C:\Book1.xls") →警告なく正常に開く
Application.Workbooks.Open("C:\Book1.xl") →警告なく正常に開く

C.Windows アプリケーション(.NET 2.0)で事前バインディングで実行

コード:
    oXls = New Excel.Application()
    oBooks = oXls.Workbooks
    Try
        oBook = oBooks.Open(TextBox1.Text)



"C:\Book1.xml" →警告なく正常に開く
> 拡張子を変更
"C:\Book1.xls" →警告なく正常に開く
"C:\Book1.xl" →警告なく正常に開く


<環境2.Win2003 Enterprise R2 SP2>
XP環境と同様の結果


となりました。
なお、Excel.ApplicationオブジェクトのVisibleをOpen前でtrueにしても結果は同じでした。
また、windows2003とOffice2007の設定はインストール直後の状態から特に変更していません。


まなかさんとの違いと言えば、ASP.NETアプリケーションかどうかでしょうか。

まなか
常連さん
会議室デビュー日: 2008/04/17
投稿数: 37
投稿日時: 2009-03-04 12:11
デューンさん、検証までありがとうございます。
2003Serverのせいではないかと思うことにします…

スキルアップ/キャリアアップ(JOB@IT)