HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
English Translate 中文翻訳
LINK
BACK
 

2014/11/21

Open XML SDKを使用して Officeのファイルを C#で自在に操る方法 Open XML SDKを使用して Officeのファイルを C#で自在に操る方法

(Microsoft Officeのファイルをプログラムで生成したり直接中身の読み取りができます)

Tags: [Windows開発]





● Open XML SDKを使用して Officeのファイルを C#で自在に操る方法


● Open XML SDK

 Microsoftが提供している Open XML SDKは下記の 3種類が有り、SDKが必要とする .NET Frameworkのバージョンが異なっています。
 (SDKを使用したアプリを実行する時や、コンパイルする時に指定する .NETのバージョン)

 ・Open XML SDK 1.0 (.NET Framework 3.0)
 ・Open XML SDK 2.0 (.NET Framework 3.5 SP1)
 ・Open XML SDK 2.5 (.NET Framework 4.0)
 ※最新の Open XML SDK 2.5はオープンソースでも提供されている。

・対応している Microsoft Officeのファイル形式
 ・Word .docx DOCX形式
 ・Excel .xlsx XLSX形式
 ・PowerPoint .pptx PPTX形式
 ※これらのファイルは拡張子を .ZIPにすると ZIPファイルとして扱えるらしい。


・Open XML SDK 1.0 (.NET Framework 3.0)

Open XML 形式 SDK 1.0

バージョン: Jun07
ファイル名: OpenXMLSDK.msi 3.3MB
公開日: 2009/04/13

CRC32: D1DE1531
MD5: 9658FD78A206727FE5689A028A2DCDB4
SHA-1: 7E35A5E63BB99D868C93BC7FF2C8172C0BAB24B0

・サポートされるオペレーティング システム
 Windows Server 2003, Windows Vista, Windows XP Service Pack 2

・対象となる Office 製品
 Microsoft Office Excel 2007
 Microsoft Office PowerPoint 2007
 Microsoft Office Word 2007

・その他の必要条件
 Microsoft .NET Framework 3.0
 最大 3 MB の使用可能なディスク領域

・SDK のインストール先(既定)
 C:\Program Files (x86)\OpenXMLSDK\1.0.1825\

・オンライン資料
Open XML 形式 SDK 1.0 へようこそ

・参照設定に追加指定する DLL
DocumentFormat.OpenXml.dll
1.0.1825 2008/06/25


・Open XML SDK 2.0 (.NET Framework 3.5 SP1)

Open XML SDK 2.0 for Microsoft Office

バージョン: Mar10
ファイル名: OpenXMLSDKv2.msi 3.9MB
 OpenXMLSDKTool.msi 110.1MB
公開日: 2010/06/03

・サポートされるオペレーティング システム
Windows 7, Windows Server 2003 Service Pack 2, Windows Server 2008 R2, Windows Server 2008 Service Pack 2, Windows Vista Service Pack 2, Windows XP Service Pack 3

・その他の必要条件
 .NET Framework Version 3.5 SP1
 300 MB の使用可能なディスク領域

・SDK のインストール先(既定)
 C:\Program Files (x86)\Open XML SDK\V2.0

・オンライン資料
Open XML SDK 2.0 for Microsoft Office へようこそ

・参照設定に追加指定する DLL
DocumentFormat.OpenXml.dll
2.0.5022.0 2010/04/30

Open XML SDK Version 2 ブログ紹介記事

Open XML 開発を利用したサンプル

・Open XML SDK 2.0コード スニペット
Office 2010 Sample: Open XML SDK 2.0 Code Snippets for Visual Studio 2010
Office2007OpenXML20Snippets.msi
OpenXMLSDKSnippetsForVS2010.msi


・Open XML SDK 2.5 (.NET Framework 4.0)

Open XML SDK 2.5 for Microsoft Office

Version: RTW
File Name: OpenXMLSDKV25.msi 2.5MB
 OpenXMLSDKToolV25.msi 24.9MB
Date Published: 11/20/2012

・Supported Operating System
 Windows 7, Windows 8, Windows Server 2003 R2 (32-Bit x86), Windows Server 2003 R2 x64 editions, Windows Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Vista Service Pack 1, Windows Vista Service Pack 2, Windows XP Service Pack 3

・Requires the following
 .NET Framework version 4.0.
 Up to 300 MB of available disk space.

・SDK のインストール先(既定)
 C:\Program Files (x86)\Open XML SDK\V2.5

・参照設定に追加指定する DLL
 DocumentFormat.OpenXml.dll
 C:\Program Files (x86)\Open XML SDK\V2.5\lib\DocumentFormat.OpenXml.dll


Open XML SDK 2.5 for Office へようこそ

Open XML SDK 2.5 for Office について

・Open XML SDK 2.5のソースリスト(オープンソース)

OfficeDev / Open-XML-SDK source code

Open-XML-SDK-master.zip

 ※コンパイルには .NET 4.0の指定が必須。
  (.NET 3.5を指定してコンパイルすると下記のエラーが出る。)

Open XML SDK 2.5を .Net Framework 3.5を指定してコンパイルした場合のエラー内容

1> C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5):
warning MSB3267: フレームワーク アセンブリであるプライマリ参照 "Microsoft.CSharp" は、
現在ターゲットされているフレームワークで解決できませんでした。
".NETFramework,Version=v3.5"。
この問題を解決するには、参照 "Microsoft.CSharp" を削除するか、
"Microsoft.CSharp" を含むフレームワーク バージョンにアプリケーションを再ターゲットしてください。



● Open XML SDK 2.5のコンパイル方法

 VS2012の統合開発環境を使用する方法が一番楽で確実です。

 ソース一式の ZIPファイルを解凍した中の README.mdの「Building with Visual Studio」の項を読む。
 1) まず、スクリプト実行ポリシーを設定する。
 2) コマンドプロンプトを管理者権限で実行する。(Power Shellでは無い)
 3) 下記のコマンドを入力して実行する。
C:> c:\windows\syswow64\WindowsPowerShell\v1.0\powershell.exe -command set-executionpolicy unrestricted

 この状態で Visual Studio 2012 Professional(11.0.61030.00 Update 4)でコンパイルが成功して OpenXml.dllが生成されました。
Open XML SDK 2.5 Compile by Visual Studio 2012 Professional

1>------ すべてのリビルド開始: プロジェクト: Open-XML-SDK, 構成: Debug Any CPU -----
1>  PowerShell script for creating AssemblyInfo.cs with the correct version string.
1>  Licensed under the Apache License, Version 2.0.
1>  See License.txt in the project root for license information.
1>  Open-XML-SDK -> Open-XML-SDK-master\build\OpenXmlSdkLib\Debug\DocumentFormat.OpenXml.dll
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========

1>------ すべてのリビルド開始: プロジェクト: Open-XML-SDK, 構成: Release Any CPU ---
1>  PowerShell script for creating AssemblyInfo.cs with the correct version string.
1>  Licensed under the Apache License, Version 2.0.
1>  See License.txt in the project root for license information.
1>  Open-XML-SDK -> Open-XML-SDK-master\build\OpenXmlSdkLib\Release\DocumentFormat.OpenXml.dll
========== すべてリビルド: 1 正常終了、0 失敗、0 スキップ ==========


● Open XML形式の Office文書のサムネイル情報

 Office文書の下記のサムネイル情報を取得する場合は、あらかじめ文章ファイルを保存する時に、
 「配布準備」→「プロパティ」→「詳細」→「ファイルの概要」→「プレビューを保存する」または「プレビューの図を保存する」にチェックを入れておく。

・Word .docx、Excel .xlsx
/docProps/thumbnail.wmf ← 1枚目のページを画像化した Wmfファイル

・PowerPoint .pptx
/docProps/thumbnail.jpeg ← 1枚目のページを画像化した Jpegファイル

・Mac系 OS
/QuickLook/Thumbnail.jpg ← 1枚目のページを画像化した Jpegファイル
/QuickLook/Preview.pdf ← 各ページを画像化した PDFファイル

※ Macの場合は /QuickLookとなる。Quick Lookとは Mac系 OSでファイルの内容を見られる仕組み。



● Visual Studio Express 2012でも Open XML SDKを使用したアプリの開発が可能です

Microsoft Visual Studio Express 2012 for Windows Desktop

バージョン: 2012
ファイル名: wdexpress_full.exe 917KB
 VS2012_WDX_JPN.iso 622.1MB
公開日: 2012/09/07

・サポートされるオペレーティング システム
 Windows 7 Service Pack 1, Windows 8, Windows Server 2008 R2 SP1, Windows Server 2012
 Windows 7 SP1 (x86 および x64)
 Windows 8 (x86 および x64)
 Windows Server 2008 R2 SP1 (x64)
 Windows Server 2012 (x64)

・ハードウェア要件:
 1.6 GHz またはそれ以上のプロセッサ
 1 GB RAM (仮想マシン上で実行する場合は 1.5 GB)
 5 GB のハード ディスク空き容量
 5,400 RPM のハード ディスク
 1024 x 768 以上の表示解像度の DirectX 9 対応ビデオ カード


using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;



● Open XML SDKを使用して C#アプリをビルド時にコンパイルエラーが出る場合

・error CS0012: 型 'System.IO.Packaging.Package' が参照されていないアセンブリで定義されています。
 → 参照設定に WindowsBase.dllを追加する

・同じ依存アセンブリの異なるバージョン間での競合が見つかりました。
 → バインディング リダイレクトを追加する

方法: 自動バインディング リダイレクトを有効/無効にする

 方法その1
 デスクトップ アプリでの自動バインド リダイレクトの無効化

 1) Visual Studio のソリューション エクスプローラーで、プロジェクトを選択し、ショートカット メニューの [エクスプローラーでフォルダーを開く] をクリックします。
 2) エクスプローラーで、プロジェクト ファイル (.csproj または .vbproj) を検索し、メモ帳で開きます。
 3) プロジェクト ファイルで、次のプロパティ エントリを検索します。
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

 4) true を false に変更します。
<AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>


 方法その2
 自動バインド リダイレクトの手動での有効化

 1) Visual Studio のソリューション エクスプローラーで、プロジェクトを選択し、ショートカット メニューの [エクスプローラーでフォルダーを開く] をクリックします。
 2) エクスプローラーで、プロジェクト ファイル (.csproj または .vbproj) を検索し、メモ帳で開きます。
 3) 最初の構成プロパティ グループ ( タグの下) に次の要素を追加します。
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build"
  xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props"
    Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == ''     ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    {123334}
    ...
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  </PropertyGroup>
...
</Project>



● C#プログラミングまめ知識

・文字列定数を代入する時の @(アットマーク)指定、here string
文字列定数を定義する時に @マークを付けるとエスケープシーケンスが不要になる。

string str1 = "C:\\Windows\\Hoge.txt";

string str2 = @"C:\Windows\Hoge.txt";

if (String.Compare(str1, str2) == 0)
  System.Console.WriteLine("str1 = str2");
文字列定数を定義する時に @マークを付けると複数行に文字列を記述する時に便利
※ PHP等のヒアドキュメント的な使い方と同じで here stringと言う。

string str1 = "This is the first line of my string.\n" +
              "This is the second line of my string.\n" +
              "This is the third line of the string.\n";

string str2 = @"This is the first line of my string.
This is the second line of my string.
This is the third line of the string.";


・文字列の大小比較
String.Compare(str1, str2)
 str1 < str2 = -1
 str1 = str2 =  0
 str1 > str2 =  1

・日付文字列の比較にも使え、引数に nullを渡しても大丈夫
String.Compare("2014/01/01 00:00:00", "2014/01/01 00:00:00") = 0
String.Compare("2014/01/01 00:00:01", "2014/01/01 00:00:00") = 1
String.Compare("2014/01/01 00:00:00", "2014/01/01 00:00:01") = -1
String.Compare("2014/01/01 23:00:00", "2014/01/02 00:00:00") = -1
String.Compare("2014/01/01 00:00:00", "2014/01/02")          = -1
String.Compare("2014/01/01",          "2014/01/02 00:00:00") = -1
String.Compare(null,                  "")                    = -1
String.Compare(null,                  null)                  = 0
String.Compare("",                    null)                  = 1

・現在の日時を文字列にする
・日時変数に任意の時間を足し算、引き算する
DateTime dt = DateTime.Now;
dt.ToString(); → "2014/11/22 12:34:56"

dt += new TimeSpan(1, 2, 3); // 1時間 2分 3秒を足す
dt.ToString(); → "2014/11/22 13:36:59"



●その他の Microsoft Office Software Development Kit SDK

Microsoft Office 2003 Smart Document Software Development Kit
 Office 2003 SDK Documentation

Microsoft Office 2003 スマート ドキュメント ソフトウェア開発キット (SDK) 日本語ドキュメント
 日本語リンクはドキュメントだけで、下記の英語版が SDKの本体なのでそれもダウンロードする。

Office 2003 Smart Document Software Development Kit (SDK)




Tags: [Windows開発]


[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2014 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/software/open_xml_sdk/