C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ADOでOpenするとXLSXファイルが開いてしまう


(過去ログ 127 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■75471 / inTopicNo.1)  ADOでOpenするとXLSXファイルが開いてしまう
  
□投稿者/ ふるふる (3回)-(2015/03/27(Fri) 13:57:19)

分類:[C#] 

[開発環境]C#, WPF4.0

VS2010 でWPF開発をしています。

データベース(SQLServer2012)からレコードを取得し、DataGridに表示(Datasetに取り込みます)しています。
表示したテーブル内容をエクセルのXLSXファイルとして出力し、エクセルをWPFから起動して表示させます。
ユーザーはエクセル上で編集します。その後、WPF上のボタンで編集したXLSXをDatasetに取り込んで既存のDataTableと交換し、DataGridを更新します。

取り込むときにOLEDBを使っているのですが、ConnectionのOpen()のタイミングで、XLSXファイルが別のエクセルインスタンス上にReadOnlyで開いてしまいます。
取り込む前にユーザーが編集したXLSXファイルを保存して閉じるようにして対応済みではあります。

対象のXLSXファイルが開いていない場合はOpen()メソッドで開かれないのに、XLSXファイルが開かれているとOpen()で開かれてしまうのはなぜでしょうか?



引用返信 編集キー/
■75474 / inTopicNo.2)  Re[1]: ADOでOpenするとXLSXファイルが開いてしまう
□投稿者/ 魔界の仮面弁士 (267回)-(2015/03/27(Fri) 15:00:40)
No75471 (ふるふる さん) に返信
> 取り込むときにOLEDBを使っているのですが、
これは、Microsoft.ACE.OLEDB.12.0 を使っているという事でしょうか。
それとも、サードパーティー製の Excel専用 OLE DB Provider でしょうか。


>XLSXファイルが開かれているとOpen()で開かれてしまうのはなぜでしょうか?
そういう実装になっている、ということなのでしょう。多分。


> 対象のXLSXファイルが開いていない場合はOpen()メソッドで開かれないのに、
開かれていなければ問題ないのであれば、そのファイルを直接開くのではなく、
一時ファイルとしてファイルをコピーし、そのコピーを使うようにするとか。
引用返信 編集キー/
■75475 / inTopicNo.3)  Re[2]: ADOでOpenするとXLSXファイルが開いてしまう
□投稿者/ ふるふる (5回)-(2015/03/27(Fri) 15:21:19)
No75474 (魔界の仮面弁士 さん) に返信
> ■No75471 (ふるふる さん) に返信
>>取り込むときにOLEDBを使っているのですが、
> これは、Microsoft.ACE.OLEDB.12.0 を使っているという事でしょうか。
> それとも、サードパーティー製の Excel専用 OLE DB Provider でしょうか。
>
>
> >XLSXファイルが開かれているとOpen()で開かれてしまうのはなぜでしょうか?
> そういう実装になっている、ということなのでしょう。多分。
>
>
>>対象のXLSXファイルが開いていない場合はOpen()メソッドで開かれないのに、
> 開かれていなければ問題ないのであれば、そのファイルを直接開くのではなく、
> 一時ファイルとしてファイルをコピーし、そのコピーを使うようにするとか。

お返事ありがとうございます。
Microsoft.ACE.OLEDB.12.0
を使っています。

そうですね、そういう仕様ということで納得しないといけないのでしょう。どこかに資料があればいいのですけど。
自動で(ユーザーへの確認メッセージなしに)XLSXファイルを保存し、閉じる方法で対処していますが、
ユーザーから「閉じないで欲しい」という要望があったらファイルのコピーで(それでもユーザーの編集を確定するためにファイルの保存は必要と思いますが)対応しようと思います。



解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -