Office(Excel、Word)二次開發——VSTO
Office(Excel、Word)二次開發——VSTO
Office二次開發模式:
1) VBA(visual studio for application),功能有限,語言落后。
2) .net2003中的對象模型(com組件,excelobject 11 library)功能強大,需手動操作。
3) vs.net2005中的vsto(visual studiotool for office) VSTO方便快捷功能強大。
2).net的com 組件(vsto原形)
①vsà新建項目àC#àwindows應用程序
②解決方案,項目,添加引用àcom中Microsoft Excel 11.0 Object Library
③using Microsoft.Office.Interop.Excel;
④寫代碼,調試。
Office PIA: Microsoft.Office.Interop.Excel.dll,還有~access.dll,~word.dll。Microsoft.Office.Core等。PIA是在安裝Office的時候選擇安裝的,而且必須有.NET Framework才能用
3)vsto,就是對PIA的二次封裝。
vsto三類:插件(Add-in),文檔級別(如ExcelWorkbook)和模版(Template)。
插件(Add-in):外接程序是應用程序級別,對所有Excel應用都是有效
文檔和模板項目:文檔級別的程序,只對當前文檔和模板有效
本人開發環境:VS2010、Office2013、.Net Framework3.5
外接程序步驟:
1.新建項目->VisualC#->Office->2007-> Excel 2007外接程序(Excel 2007Add-in),Framework3.5
屬性à調試à啟用外部程序D:\ProgramFiles (x86)\Microsoft Office\Office15\EXCEL.EXE
2、卸載插件:①vs右鍵解決方案——>清理,②excel開發工具選項卡——>COM插件--移除
1、VSàExcel 2010 Workbook(Excel工作簿)項目,
2、提示:是否允許創建的項目訪問VBA項目系統,點擊“Ok”
Excel Workbook步驟:
UI設計參考:基於VSTO的Office二次開發c#.docx
Excel UI:任務窗體(Task Pane)、選項卡Ribbon、上下文菜單(右鍵)
2、在Excel里創建一個功能區Ribbon(VisualDesigner)
數據處理:用Access比較合適,因為SQL server太大,不適合用在excel上,另外,如果數據大時用excel太慢。所以結合access進行數據庫處理是關鍵。連接數據庫用ado.net 既可以連access,到時候還可以換sqlserver。
讀取excel數據:
0)Linq To Excel:簡單,開源,支持linq,但只能讀,不能寫。類似還有LinqToXml
1)、OLEDB快但不靈活(ado.net好像就建立在這之上),大量重復數據運算用,不改格式,只要數據。相當於當數據庫用,可以直接換成access,可以用sql語句。
2)、com組件靈活但慢(Interop.Excel,就是vsto原形,客戶端必須有excel,基於單元格讀取慢),少量數據用,而且有格式。
如果用com,盡量讀取一個區域range[“B5:H200”],不要一個單元格一個單元的讀取。
。。以下不推薦。。
3)、NOPI,快,靈活,上海人開發的組件,特殊功能收費,可能會不支持最新版excel,1m大小的dll,麻煩
4)、將Excel文件轉化成CSV(逗號分隔)的文件,用文件流讀取(等價就是讀取一個txt文本文件)。
5)、OpenXml SDK組件,據說速度不快
部署發布
1、Vsto4之前的發布需要新建一個setup的安裝文件,其他項目類型à安裝和部署àVisualStudio Installerà安裝項目、à屬性,簽名,選擇強名稱密鑰文件—>生成安裝文件à在解決方案上右鍵->發布à會在目標文件夾生成三個文件(setup.exe、AddIn.vsto、Application Files文件夾)à 將其打包給最終客戶
2、卸載加載項
如果是自己本機做測試可以直接刪除注冊表
在注冊表中HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\Addins\中找到outlookVSTO將其刪除就可以卸載掉加載頃
客戶則可以像卸載其它應用程序一樣卸載
vs官方:
| VS | VSTO | Office |
| 2003 | 2003 | |
| 2005 | 2005 | 03 |
| 2005SE | 03、07部分 | |
| 2008 | 2008 | 07 |
| 2010 | 07/10 | |
| 2012 | 10/13 | |
| 2013 | 10/13 | |
| 2015 | 10/13/16 |
總結:office03已經淘汰不用管,建議用vs2010開發Office 07/10,vs2015可以開發10、13,16的不成熟。支持office10的最多。
參考資料:
推薦:①新一代 NET Office開發指南Excel篇2006年,P465,C#(framework2,office2003,vs2005)
可不看:②VSTO開發者指南 VB寫的,只看開發環境
