使用WPS,把Excel轉Pdf所碰到的坑


使用WPS,把Excel轉Pdf所碰到的坑

1. 安裝WPS2012 個人版,在項目里引用Com組件Kingsoft.ET2.0 Library,結果提示 出現了無法嵌入互操作類型“……”,請改用適用的接口的錯誤提示。

 解決辦法就是:選中項目中引入的dll,鼠標右鍵,選擇屬性,把“嵌入互操作類型”設置為False。

然后噼里啪啦直接在aspx.cs頁面寫了一段代碼:

try
            {
                object type = System.Reflection.Missing.Value;
                ET.ApplicationClass application = null;
                ET.workbook book = null;
                try
                {
                    application = new ET.ApplicationClass();
                    book = (ET.workbook)application.Workbooks.Open(xlspath, type, type, type, type, type, type, type, type, type, type, type, type);
                    book.ExportPdf(pdfpath, "", "");  //this.GetFilePath(path)是獲取文件路徑+文件名(不含后綴)
                }
                catch (Exception ex)
                {                    
                   
                }
                finally
                {
                    if (book != null)
                    {
                        book.Close(true, type, type);
                        book = null;
                    }
                    if (application != null)
                    {
                        application.Quit();
                        application = null;
                    }
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                    GC.Collect();
                    GC.WaitForPendingFinalizers();
                }

            }
            catch (Exception ex)
            {
                
            }
        }

 測試了一下,可以生成pdf,這么小case,半個小時就搞定了。。。大功告成,然后上傳到服務器,運行時卻提示

Retrieving the COM class factory for component with CLSID {45540001-5750-5300-4B49-4E47534F4654} failed due to the following error: 80040154 沒有注冊類別 

但是我在服務器已經安裝了WPS2012了,怎么會沒有找到com組件呢?

是不是沒有權限呢,打開管理工具的組件服務,找到KingSoft SpreadSheet 組件,把啟動激活訪問權限都加上了。還是不行!

(Kingsoft Spreadsheets Application Class--------應用ID{45540001-5750-5300-4B49-4E47534F4654} 

把啟動激活訪問權限Everyone都加上了,運行此應用程序的賬號為啟動用戶)

是不是IIS的進程池賬號權限不夠呢? 把進程池賬號改成LocalSystem。結果還是不行!

是不是網頁調WPS有什么限制呢? 那我寫一個WinForm程序(Excel2Pdf.exe)去調WPS,然后用網頁Call這個WinForm程序(Excel2Pdf.exe)。三板斧使完,還是不行!

怎么辦呢?還是洗洗睡了,明天再說了。。。

 

第二天,在本地電腦用另一個賬號登陸測試,結果發現原來網頁在本地能成功轉成PDF的,現在換了個賬號卻不行了。難道是WPS的使用權限是跟賬號的?

運行WPS2012的安裝程序,它默認的安裝路徑是C:\User\Administrator\...  我猜想它只是安裝在某個賬號下,而不是Everyone,在網頁上的訪問賬號和管理員賬號是不同的,所以就不能調用了。

卸載掉WPS2012,重新下載一個WPS2010的安裝程序,它默認的安裝路徑是C:\Program Files\KingSoft ..., 這個是安裝for Everyone的。用這個安裝后,在本地和服務器上都可以成功轉PDF

這個坑花了2天時間,只怪WPS2012沒有提供一個選項Install for Everyone or Just for me.

 

 ------------------------

后記, wps的自動升級功能很坑爹,wps2010會自動升級到最新版本,而最新的wps2013是安裝到每個用戶目錄的.

所以要手動把C:\Program Files\KingSoft\wps\office6\ 下面的有關自動升級的exe文件移到其他地方或者改名.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM