powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как читать свойства нескольких документов Office?
5 сообщений из 5, страница 1 из 1
Как читать свойства нескольких документов Office?
    #35697830
gp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть тысячи файлов Office,
нужно достать из них Title, который виден в Document Summary в проводнике Windows.

Желательно не открывать при этом файл оффисом.

Как это сделать, желательно средствами NET Framework, или на худой конец C++.

Вообще, как читать эти свойства не только для оффисных документов?
...
Рейтинг: 0 / 0
Как читать свойства нескольких документов Office?
    #35698573
gp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал с помощью SDOFile.dll
...
Рейтинг: 0 / 0
Как читать свойства нескольких документов Office?
    #35698699
LeCrunch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gp,
так , или как?
Поделись!)
...
Рейтинг: 0 / 0
Как читать свойства нескольких документов Office?
    #35698747
gp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
using System;
using System.IO;
using System.Text;
using DSOFile;

namespace DSOReadFileProperties
{
	class Program
	{
		delegate void VoidFunc();
		static void Main(string[] args)
		{
			if (args.Length != 2)
				Usage();
			var directoryPath = args[0];

			var filePaths = Directory.GetFiles(directoryPath, "*.docx");

			var outputFileName = args[1];
			
			OleDocumentPropertiesClass doc = null;
            
			try
			{
				using (var writer = new StreamWriter(outputFileName))
				{
					foreach (var fileName in filePaths)
					{
						doc = new OleDocumentPropertiesClass();

						if (!File.Exists(fileName))
							throw new InvalidOperationException("File does not exist");

						doc.Open(fileName, true, dsoFileOpenOptions.dsoOptionDontAutoCreate);
						
						var sb = new StringBuilder(100);
						var propertyInfos = typeof(SummaryProperties).GetProperties();
						var beginOfLine = new []{true};

						VoidFunc tabulate = delegate { if (beginOfLine[0]) beginOfLine[0] = false; else sb.Append('\t'); };

						sb.Append("fileName");
						tabulate();
						foreach (var propertyInfo in propertyInfos)
						{
							tabulate();
							sb.Append(propertyInfo.Name);
						}

						sb.Append(Environment.NewLine);

						beginOfLine[0] = true;

						sb.Append(fileName);
						foreach (var propertyInfo in propertyInfos)
						{
							var v = propertyInfo.GetValue(doc.SummaryProperties, null);
							tabulate();
							sb.Append(v);
						}

						writer.WriteLine(sb.ToString());
						writer.Flush();
					}
				}
			}
			finally
			{
				if (doc!=null)
					doc.Close(false);
			}
		}

		private static void Usage()
		{
			Console.Error.WriteLine("USAGE: DSOReadFileProperties document_directory output_file. Warning: output_file will be overriden.");
		}
	}
}

...
Рейтинг: 0 / 0
Как читать свойства нескольких документов Office?
    #35698758
gp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сори, код с ошибками
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
using System;
using System.IO;
using System.Text;
using DSOFile;

namespace DSOReadFileProperties
{
	class Program
	{
		delegate void VoidFunc();
		static void Main(string[] args)
		{
			if (args.Length != 2)
				Usage();
			var directoryPath = args[0];

			var filePaths = Directory.GetFiles(directoryPath, "*.docx");

			var outputFileName = args[1];
			
			OleDocumentPropertiesClass doc = null;
            
			try
			{
				using (var writer = new StreamWriter(outputFileName))
				{
					var sb = new StringBuilder(100);
					var propertyInfos = typeof(SummaryProperties).GetProperties();
					var beginOfLine = new[] { true };

					sb.Append("fileName");
					VoidFunc tabulate = delegate { if (beginOfLine[0]) beginOfLine[0] = false; else sb.Append('\t'); };
					tabulate();
					foreach (var propertyInfo in propertyInfos)
					{
						tabulate();
						sb.Append(propertyInfo.Name);
					}

					foreach (var fileName in filePaths)
					{
						doc = new OleDocumentPropertiesClass();

						if (!File.Exists(fileName))
							throw new InvalidOperationException("File does not exist");

						doc.Open(fileName, true, dsoFileOpenOptions.dsoOptionDontAutoCreate);
						
						sb.Append(Environment.NewLine);

						beginOfLine[0] = true;

						sb.Append(fileName);
						tabulate();
						foreach (var propertyInfo in propertyInfos)
						{
							var v = propertyInfo.GetValue(doc.SummaryProperties, null);
							tabulate();
							sb.Append(v);
						}

						doc.Close(false);
					}
					writer.WriteLine(sb.ToString());
					writer.Flush();
				}
			}
			finally
			{
				if (doc!=null)
					doc.Close(false);
			}
		}

		private static void Usage()
		{
			Console.Error.WriteLine("USAGE: DSOReadFileProperties document_directory output_file. Warning: output_file will be overriden.");
		}
	}
}

...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как читать свойства нескольких документов Office?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]