2009-08-11 74 views
1

我們每天都會收到使用相同密碼進行密碼保護的Excel工作簿文件。我們知道這個密碼。是否有一種實用工具或方法可以在不調用Excel.exe或Excel對象的情況下刪除這些工作簿文件的密碼保護。我們的目標是將Excel從流程中移出並利用VB.net中的SpreadsheetGear。但是,SpreadsheetGear只能取消保護工作表而非工作簿。Excel密碼刪除

謝謝

回答

1

他們是XLS還是XLSX文件?

對於XLSX顯然您可以使用RMS SDK來使用加密的XLSX存儲格式。 http://msdn.microsoft.com/en-us/library/aa767782(VS.85).aspx

看着它,雖然它只是一個幾乎沒有代碼示例的規範,所以很好運。 一旦你有權訪問基礎XML,你可以使用.net或java的標準XML命名空間來處理文件。

2003(XLS)格式,除非您使用支持程序化訪問的propietrary第三方供應商解決方案(不知道任何特定產品),否則您運氣不好。

3

您只需要將工作簿的Password屬性設置爲空字符串。在Python中:

from win32com.client import DispatchEx 
xlApp = DispatchEx("Excel.Application") 
xlApp.Workbooks.Open (mySpreadsheet, Password=myPassword, WriteResPassword=myPassword) 
xlWB = xlApp.Workbooks[0] 
xlWB.Password = "" 
xlWB.Save() 
xlWB.Close(False) 
xlApp.Quit() 
+0

Greg,感謝您的回覆。不幸的是,由於它仍然會啓動Excel.exe,因此錯過了該標記。我需要一些方法來處理不涉及Excel對象或exe文件的文件。 – SVTCobra 2009-08-11 20:26:41

+0

恩,如果你不想在服務器上運行Excel,你可能還是要重新考慮。 Excel API有幾個實例化選項。一個是總是使用一個新的實例;這樣可以讓多個進程避免彼此踩腳趾。每個內存的使用量可能都是20MB--整個運行時間爲1秒。 – Greg 2009-08-11 20:27:32

+0

我同意,但我們已經在服務器上運行Excel了,而且我的老闆想讓它退出流程。 – SVTCobra 2009-08-11 20:49:06