我使用dsofile.dll組件編寫了一小段代碼,在將文件上傳到Web服務器(設置將文件鏈接到數據庫記錄的GUID)後修改文檔屬性。 我接過分量和說明資訊從這裏:http://support.microsoft.com/kb/224351爲什麼dsofile.dll仍然需要Office安裝?
至於我通情達理它不使用Office修改的屬性。 我實現了它,並在我的32位和64位計算機上測試它(網絡服務器在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));
}
於是我開始執行調試代碼,整天長在網絡上閱讀的文章。 我最終在服務器上安裝了Office 2010 32位。
然後之後我得到了一個新的錯誤:
The document is not an OLE file, and does not support extended document properties
奇怪的是,該錯誤只爲dotx
,xlsx
,FF,但不能用於doc
,xls
,FF。
安裝了Office 2010的所有可用更新並重試之後。 然後,它按照我的意願工作,並堅持使用所有文件上載頁面設置的屬性。
所以安裝Office 2010作爲服務器上的一絕是不是我所期待的待辦事項:)
- 有誰知道Office安裝的dsofile.dll需要沒有填充安裝工作的組成部分是什麼?
- 換句話說:我可以複製一堆文件並手動將它們「註冊」在服務器上嗎?
- 還是我誤解了一些東西,這是我的代碼?!
感謝您的澄清。但我仍然想知道,爲什麼它在服務器上安裝Office之後工作(dsofile中使用office組件的某些密碼?!)。關於其他解決方案:我需要一個解決方案,讓我在2003年,2007年,2010年Office文檔中添加屬性。 – YvesR
嗨Hans Passant,MS有沒有其他的DSOFILE?謝謝 – subZero