現在的項目中遇到一個棘手的問題,用了很長的時間才找到解決的辦法,所以把解決方案展示出來。
需求:把一個二進制字節數組(byte[])存到moss文檔庫中
環境:虛機和測試機都是(moss2007+vs2005),并且虛機自己作為域控,而測試機是域里的一臺機器
實現:
? 保存:public bool SaveData(string fileurl, byte[] bits)
??????? {
??????????? bool save = false;
??????????? using (SPSite site = new SPSite(fileurl))
??????????? using (SPWeb web = site.OpenWeb())
??????????? {
??????????????? SPFile file = web.GetFile(fileurl);
??????????????? file.SaveBinary(bits);
??????????????? save = true;
??????????? }
??????????? return save;
??????? }
獲取的二進制數組:
??????? public byte[] GetWorkbookBits(WorkbookType type, string SeeionID)
??????? {
??????????? try
??????????? {
??????????????? ExcelService s = new ExcelService();
??????????????? Status[] status;
??????????????? s.Credentials = CredentialCache.DefaultCredentials;
??????????????? byte[] bits = s.GetWorkbook(SeeionID, type, out status);
??????????????? return bits;
??????????? }
??????????? catch (Exception soapEx)
??????????? {
??????????????? throw new ApplicationException("The session has timed out.");
??????????? }
??????? }
效果:虛機上保存成功,但是到測試機上生成的excel2007文件在打開時(下載到本地)有如下的錯誤:excel found unreadable content in <filename>,do you want to recover the contents of this workbook
我的解決:
1、比較web.config配置-----沒有區別
2、比較office版本,開始的時候虛機是12.0.4518.1014,后來和服務器一樣12.0.6300.5000
3、參考一下頁面http://blogs.msdn.com/cumgranosalis/archive/2007/08/03/excel-found-unreadable-content-in-workbook-do-you-want-to-recover-the-contents-of-this-workbook.aspx
http://forums.msdn.microsoft.com/en-US/sharepointexcel/thread/f532c447-4427-4135-af4c-5a68b0b891df/
最終的解決辦法很簡單是file.SaveBinary(bits);方法中file文件由原來的“.xlsx”改成“.xlsb”格式文件。
見:http://www.cnblogs.com/fanwenxuan/archive/2008/08/01/1258423.html
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
