dsofile.dllコンポーネントを使用して、ファイルをWebサーバーにアップロードした後にドキュメントのプロパティを変更する小さなコードを作成しました(ファイルをデータベースレコードにリンクするGUIDを設定するため)。ここからコンポーネントと手順を取得しました:http ://support.microsoft.com/kb/224351
私が理解している限り、Officeを使用してプロパティを変更することはありません。私はそれを実装し、32ビットと64ビットのマシン(Webサーバーは32ビットモードで実行されます)でテストしましたが、すべて正常に動作しました。私は幸せでした。しかし、それをライフマシンにデプロイした後、それは私の値のプロパティを保持しませんでしたが、エラーもスローしません!
これが私がしたことを確認するためのいくつかのコードです:
public void SetProperty(string filename, string property, string value)
{
m_oDocument.Open(filename);
var oProp = m_oDocument.CustomProperties;
try
{
oProp.Add(property, value);
} catch(Exception)
{
foreach (CustomProperty cProp in oProp.Cast<CustomProperty>().Where(cProp => cProp.Name == property))
{
cProp.set_Value(value);
}
}
if ( Debug)
{
m_spy.Spy("filename: " + filename);
m_spy.Spy("filename modified: " + m_oDocument.IsDirty);
}
if ( m_oDocument.IsDirty ) m_oDocument.Save();
m_oDocument.Close();
if ( Debug ) m_spy.Spy(GetProperty(filename, property));
}
それで私はデバッグコードの実装を始め、一日中ウェブ上の記事を読みました。サーバーにOffice201032ビットをインストールすることになりました。
次に、新しいエラーが発生した後:
The document is not an OLE file, and does not support extended document properties
奇妙なことに、エラーは、、 ffのみでdotx
あり、、、xlsx
ffではありませんでした。doc
xls
Office 2010で利用可能なすべての更新プログラムをインストールして、再試行した後。その後、希望どおりに機能し、アップロードページで設定したプロパティをすべてのファイルに保持します。
したがって、Office 2010をサーバーに必須としてインストールすることは、私が期待していたことではありません:)
- フィルインストールなしでdsofile.dllが機能するために必要なOfficeインストールのコンポーネントを知っている人はいますか?
- 言い換えると、大量のファイルをコピーしてサーバーに手動で「登録」することはできますか?
- それとも私は何かを誤解しましたか?それは私のコードですか?!