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

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

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

Re[7]: C#からxlsxファイルにアクセス時に必要なものは?


(過去ログ 136 を表示中)

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

■79995 / inTopicNo.1)  C#からxlsxファイルにアクセス時に必要なものは?
  
□投稿者/ Mu (3回)-(2016/06/03(Fri) 12:22:52)

分類:[.NET 全般] 

開発:Win7 32bit Vs2015 C# .Net4.5 Excel2007(xlsx形式)
実行環境:Win8.1Pro 64bit

なんか、似たような内容でたびたび申し訳ないです。

お世話になります。上記の開発環境でエクセルファイルを読み込むツールを作成しています。
実行環境にエクセルがインストールされていないのですが、この場合、DLL等のインストール
でアクセスすることが可能でしょうか(どこか参考になるサイトは無いでしょうか)。
若しくはエクセルのインストールが必須でしょうか。

以下を参考にしてみましたが、DLLが配布されていないようで、アプリが起動しませんでした。
※起動時にCLSID{・・・・}取得エラー
http://www.osadasoft.com/c-excel%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%A8%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%A9%E3%81%AE%E4%BD%9C%E6%88%90/

以上、よろしくお願いします。

引用返信 編集キー/
■79997 / inTopicNo.2)  Re[1]: C#からxlsxファイルにアクセス時に必要なものは?
□投稿者/ WebSurfer (928回)-(2016/06/03(Fri) 13:00:07)
No79995 (Mu さん) に返信
> 開発:Win7 32bit Vs2015 C# .Net4.5 Excel2007(xlsx形式)
> 実行環境:Win8.1Pro 64bit
>
> なんか、似たような内容でたびたび申し訳ないです。
>
> お世話になります。上記の開発環境でエクセルファイルを読み込むツールを作成しています。
> 実行環境にエクセルがインストールされていないのですが、この場合、DLL等のインストール
> でアクセスすることが可能でしょうか(どこか参考になるサイトは無いでしょうか)。

ACE でできると思います。(書式などを設定しようとすると無理ですが。その場合は Open XML とか
Closed XML を使うことになると思います)

ACE OleDb で Excel のブック作成
http://surferonwww.info/BlogEngine/post/2012/01/26/Creating-Excel-workbook-by-using-ACE-OleDb-provider.aspx
引用返信 編集キー/
■80002 / inTopicNo.3)  Re[2]: C#からxlsxファイルにアクセス時に必要なものは?
□投稿者/ Mu (4回)-(2016/06/03(Fri) 13:46:44)
WebSurfer 様
お世話になります。

サイト見ました。ACEでDBのようにアクセスすることもできるんですね。

ただ、今回取り扱うシートは1シート内に複数の表があったり、任意位置のセル
のみ値を取得したりという内容なので、セルに直接アクセスをしたいのです。

エクセルのインストールが必須か?
若しくは別途DLL等のインストールでOKか。

このあたりの情報を希望しますm(__)m。





No79997 (WebSurfer さん) に返信
> ■No79995 (Mu さん) に返信
>>開発:Win7 32bit Vs2015 C# .Net4.5 Excel2007(xlsx形式)
>>実行環境:Win8.1Pro 64bit
>>
>>なんか、似たような内容でたびたび申し訳ないです。
>>
>>お世話になります。上記の開発環境でエクセルファイルを読み込むツールを作成しています。
>>実行環境にエクセルがインストールされていないのですが、この場合、DLL等のインストール
>>でアクセスすることが可能でしょうか(どこか参考になるサイトは無いでしょうか)。
>
> ACE でできると思います。(書式などを設定しようとすると無理ですが。その場合は Open XML とか
> Closed XML を使うことになると思います)
>
> ACE OleDb で Excel のブック作成
> http://surferonwww.info/BlogEngine/post/2012/01/26/Creating-Excel-workbook-by-using-ACE-OleDb-provider.aspx
引用返信 編集キー/
■80003 / inTopicNo.4)  Re[3]: C#からxlsxファイルにアクセス時に必要なものは?
□投稿者/ WebSurfer (930回)-(2016/06/03(Fri) 14:00:58)
No80002 (Mu さん) に返信

> ただ、今回取り扱うシートは1シート内に複数の表があったり、任意位置のセル
> のみ値を取得したりという内容なので、セルに直接アクセスをしたいのです。

Excel はインストールしない、即ち Office オートメーションの機能は使わないと
いうことですよね?

1. Office PIA 経由で Office 製品をオートメーションすることによる、Office オブジェクトモデルの操作
https://blogs.msdn.microsoft.com/office_client_development_support_blog/2012/02/15/1-office-pia-office-of/

であれば、先のレスでも書きましたが、Open XML とか Closed XML を使うという
話になるのではないかと思います。

Open XML SDK 2.0 を使用して Excel 2010 ブックを生成する
https://msdn.microsoft.com/ja-jp/library/office/hh180830(v=office.14).aspx

ClosedXML - The easy way to OpenXML
http://closedxml.codeplex.com/
引用返信 編集キー/
■80006 / inTopicNo.5)  Re[3]: C#からxlsxファイルにアクセス時に必要なものは?
□投稿者/ 魔界の仮面弁士 (742回)-(2016/06/03(Fri) 14:19:01)
No80002 (Mu さん) に返信
> ただ、今回取り扱うシートは1シート内に複数の表があったり、任意位置のセル
> のみ値を取得したりという内容なので、セルに直接アクセスをしたいのです。

セル単位での走査も可能です。
たとえば下記では、Sheet1 の E9:J11 の範囲(3行6列分)を読み出しています。


string connString =
 "Provider=Microsoft.ACE.OLEDB.12.0;" +
 "Data Source=C:\\TEMP\\TEST.xlsx;" +
 "Extended Properties=\"Excel 12.0 Xml;IMEX=1;HDR=NO\"";

DataTable table = new DataTable();

using (OleDbConnection connection = new OleDbConnection(connString))
{
  string sql = @"SELECT * FROM [Sheet1$E9:J11]";
  using (OleDbDataAdapter da = new OleDbDataAdapter())
  {
    da.SelectCommand = connection.CreateCommand();
    da.SelectCommand.CommandText = sql;
    da.Fill(table);
  }
  connection.Close();
}

// OleDbDataReader を使っても OK。



> エクセルのインストールが必須か?
Excel.Application をオートメーションする場合は、
Excel 本体のインストール(と Excel の利用ライセンス)が必要です。

また、COM 相互運用になるので、オブジェクトの解放の手間が意外と面倒です。


> 若しくは別途DLL等のインストールでOKか。
xlsx を直接編集するタイプのライブラリなら、Excel は不要です。ACE もそうですね。

http://c1.grapecity.com/SuperProducts/Excel/
http://www.xlsoft.com/jp/products/spreadsheetgear/
http://www.adv.co.jp/product/product_excelcreator2012.htm
https://code.google.com/archive/p/excellibrary/
https://exceldatareader.codeplex.com/
http://npoi.codeplex.com/
http://epplus.codeplex.com/
https://closedxml.codeplex.com/
引用返信 編集キー/
■80012 / inTopicNo.6)  Re[4]: C#からxlsxファイルにアクセス時に必要なものは?
□投稿者/ Mu (6回)-(2016/06/03(Fri) 17:29:44)
魔界の仮面弁士様、WebSurfer 様
お世話になります。

情報、ありがとうございます。実際に試して、エクセルのデータを
読むことができました。

追加で質問ですが、SQLでデータの読み書きをする
いうことで、やはり、セルの背景色や罫線などのフォーマット
に関するものにはアクセスできないですよね・・・。

                     以上
引用返信 編集キー/
■80014 / inTopicNo.7)  Re[5]: C#からxlsxファイルにアクセス時に必要なものは?
□投稿者/ 魔界の仮面弁士 (744回)-(2016/06/03(Fri) 17:41:08)
No80012 (Mu さん) に返信
> 追加で質問ですが、SQLでデータの読み書きをする
書式は扱えません。

DAO や ACE のそれは、JET I-ISAM と呼ばれる物で、
あくまでも「データ」として扱うために用意された機能です。


> いうことで、やはり、セルの背景色や罫線などのフォーマット
> に関するものにはアクセスできないですよね・・・。
先ほど紹介したライブラリをお試しください。
xlsx の書式操作にも対応しています。

もし、「読み取り」ではなく「出力」が目的なのであれば、
xlsx ではなく、SYLK フォーマットや HTML フォーマットで
ファイルを吐き出すという手もあります。あるいは XML でも良いですが。
引用返信 編集キー/
■80015 / inTopicNo.8)  Re[6]: C#からxlsxファイルにアクセス時に必要なものは?
□投稿者/ Mu (7回)-(2016/06/03(Fri) 17:50:16)
魔界の仮面弁士様、ご返信、ありがとうございます。
>あくまでも「データ」として扱うために用意された機能です。

了解しました。

納入先がサードパーティ製品の導入は強く拒否しているので、
エクセルをインストールしてもらう方向になりそうです。

貴重な情報、ありがとうございましたm(__)m。


解決済み
引用返信 編集キー/
■80016 / inTopicNo.9)  Re[7]: C#からxlsxファイルにアクセス時に必要なものは?
□投稿者/ WebSurfer (932回)-(2016/06/03(Fri) 18:06:32)
No80015 (Mu さん) に返信

> >あくまでも「データ」として扱うために用意された機能です。
>
> 了解しました。
>
> 納入先がサードパーティ製品の導入は強く拒否しているので、
> エクセルをインストールしてもらう方向になりそうです。

レスを読んでいただいてますか? ACE で書式設定がダメなのは一番最初のレスで
書きました。

Open XML を紹介しましたが、見ていただけましたか? サードパーティ製品ではあ
りません。
引用返信 編集キー/
■80019 / inTopicNo.10)  Re[7]: C#からxlsxファイルにアクセス時に必要なものは?
□投稿者/ 魔界の仮面弁士 (745回)-(2016/06/03(Fri) 18:56:03)
No80015 (Mu さん) に返信
> 納入先がサードパーティ製品の導入は強く拒否しているので、

蛇足情報として、一応、書式対応のライブラリを挙げておきます。

[Open XML SDK 2.0] → Microsoft EULA
https://www.microsoft.com/ja-jp/download/details.aspx?id=5124


[Open XML SDK 2.5/2.6] → Apache 2.0 License
https://www.microsoft.com/en-us/download/details.aspx?id=30425
https://github.com/OfficeDev/Open-XML-SDK


[NPOI] → Apache 2.0 License
http://npoi.codeplex.com/
https://github.com/tonyqus/npoi/


[EPPlus] → GNU Library General Public License (LGPL)
http://epplus.codeplex.com/


[ClosedXML] → MIT License
https://closedxml.codeplex.com/
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -