質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

4回答

11942閲覧

C#でファイルのプロパティの取得の仕方

kaz0610

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2015/09/09 06:57

こんにちは!
C#で添付画像のファイルプロパティでカスタムタブの中にあるプロパティを取得したいのですがどうすれば取得できるでしょうか?
よろしくお願いします。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

Spire.Docでファイルのプロパティを簡単に取得することができるようです。

       Document doc = new Document(); doc.LoadFromFile("Set_Properties.docx"); //プロパティを取得 Console.WriteLine(("_タイトル: " + doc.BuiltinDocumentProperties.Title)); Console.WriteLine(("サブタイトル: " + doc.BuiltinDocumentProperties.Subject)); Console.WriteLine(("作成者_: " + doc.BuiltinDocumentProperties.Author)); Console.WriteLine(("管理者: " + doc.BuiltinDocumentProperties.Manager)); Console.WriteLine(("会社: " + doc.BuiltinDocumentProperties.Company)); Console.WriteLine(("分類: " + doc.BuiltinDocumentProperties.Category)); Console.WriteLine(("キーワード: " + doc.BuiltinDocumentProperties.Keywords)); Console.WriteLine(("コメント: " + doc.BuiltinDocumentProperties.Comments)); Console.Read();

投稿2020/11/25 05:38

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

カスタムタブは過去のOffice系ドキュメント用のプロパティだったかと思います。
WordやExcelで別々に開いて処理する方法しかわかりませんが取得は簡単です。
以下、WordとExcelの例

c#

1using System; 2 3namespace teraCLI 4{ 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 var excel = new Microsoft.Office.Interop.Excel.Application(); 10 excel.Visible = false; 11 var ex = excel.Workbooks.Open(@"c:\temp\test.xls"); 12 DisplayCustomProperty(ex); 13 excel.Workbooks.Close(); 14 excel.Quit(); 15 16 var word = new Microsoft.Office.Interop.Word.Application(); 17 word.Visible = false; 18 var doc = word.Documents.Open(@"c:\temp\test.doc"); 19 DisplayCustomProperty(doc); 20 word.Documents.Close(); 21 word.Quit(); 22 Console.ReadKey(); 23 } 24 25 private static void DisplayCustomProperty(dynamic officeObject) 26 { 27 if (officeObject != null) 28 { 29 dynamic properties = officeObject.CustomDocumentProperties; 30 foreach (dynamic p in properties) 31 { 32 Console.WriteLine(p.Name + " " + p.Value); 33 } 34 } 35 } 36 } 37} 38

Microsoft Excel "バージョン" Object LibraryMicrosoft Word "バージョン" Object LibraryといったCOMをインポートする必要があります。

投稿2015/09/16 02:09

sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaz0610

2015/09/16 02:39

回答ありがとうございます。 私の説明不足で申し訳ありませんが、ターゲットのファイルはoffice系のファイルでないためこちらのコードを参考に組み込んでみましたが取得できませんでした。
guest

0

イメージ説明
参照設定の追加でCOMの"Microsoft Shell Controls And Automation"を追加します。
これによりShell32のAPIが使えるようになります。
ファイルのプロパティ取得を行いたいCSファイル内で using Shell32; を記載。

string dir = @"c:\tmp"; string file = @"hoge.xls"; ShellClass shell = new ShellClass(); Folder folder = shell.NameSpace(dir); FolderItem item = folder.ParseName(file); for (int i = 0; i < 1000; i++) { string name = folder.GetDetailsOf(item, i); if (string.IsNullOrEmpty(name)) continue; Debug.WriteLine(i + ": " + name); }

このようなコードで属性が取得できます。

投稿2015/09/09 10:14

CharmSystems

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaz0610

2015/09/16 00:35

返事が遅くなり申し訳ございません。 サンプルコードありがとうございます。 試しましたが、たしかにプロパティは取得できましたが、カスタムタブの中の値は取得できませんでした。
guest

0

検索してみると、こんな方法でできるようです。

Folder.GetDetailsOf methodがキモです。

投稿2015/09/09 07:10

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaz0610

2015/09/09 07:30

回答ありがとうございます。 申し訳ありません。まだC#始めたばかりなので具体的なコードで示していただけると非常に助かります。
退会済みユーザー

退会済みユーザー

2015/09/09 07:56

先に挙げたページの緑のチェックが付いている回答がそうです。
kaz0610

2015/09/16 00:36 編集

返事が遅くなり申し訳ございません。 試しましたが、たしかにプロパティは取得できましたが、カスタムタブの中の値は取得できませんでした。
退会済みユーザー

退会済みユーザー

2015/09/16 03:14

緑のチェックの回答にコメントが付いていて、そこに「How to SET..」というコメントがあると思うのですが、ここに取得したプロパティに値を設定する基本的な方法が書かれています。 値を取得する場合は、この逆でGETですね。(How to SETの記事の緑のチェック付きコメント内のLink。ここに関連情報としてあるものが必要な情報かなと思います。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問