首先來個名詞解釋,Office網絡文檔控件,就是在網頁中編輯office文檔的控件(前提是browser已經安裝OFFICE)。
最近一個項目需要用到這個玩意,經過不泄努力的百度和GOOLE,發(fā)現Office網絡文檔控件資源,目前國產的有以下幾款:
一、iWebOffice2006
江西金格網絡科技有限責任公司
http://www.goldgrid.com/DownLoad/index.asp#Item24
我的簡單意見:需要安裝服務器端組件,并進行一些COM+組件設置,當然客戶端控件也是需要安裝的。它的網絡通訊都要經過它自己的組件和控件來進行,個人嫌麻煩,不建議使用。
二、NTKO OFFICE文檔控件
重慶軟航科技有限公司
http://www.ntko.com/
我的簡單意見:它的網站上有一年免費使用的版本。這個只需要客戶端控件,個人試用效果還可以,建議使用。偶已經破解4.0.0.9版本,可以用到9999年12月31日。但是它有個缺點,就是控件中有2個標題欄,很討厭。網上傳播很廣的3.0.0.7破解版也是這樣。
三、WebEditor 文檔控件系列
廣州帝龍科技
Http://www.dragongod.com
我的簡單意見:其實這個產品和iWebOffice2006很相似,真懷疑它們的來歷。不建議使用。
四、WebOffice網絡文檔控件
北京點聚信息技術有限公司
http://www.dianju.cn/p/weboffice/
我 的簡單意見:這個公司的WebOffice控件完全免費,功能也很不錯,但是實際測試后發(fā)現,和WEB頁面的一些元素定位、顯示不是很兼容。比如如果給這 個控件定義一個style="display:none"的屬性的話,運行結果是這個控件會跳出頁面,單獨顯示一個窗口。但它畢竟是免費的,個人推薦使 用。
五、soaoffice網絡文檔控件
北京科翰軟件有限公司
http://www.kehansoft.com/
我的簡單意見:這個公司的Office控件使用極其麻煩,因為它不是獨立的,是和其他控件捆綁的,需要安裝服務器端軟件,我是堅決不用的。
六、雙進WORD網絡文檔控件
南京雙進科技咨詢有限公司
http://www.sjtsoft.com
我的簡單意見:沒找到演示下載,而且也只有word支持,不要去試了吧
七、DSOFramer網絡文檔控件
http://www.dsoframer.com/
我的簡單意見:這個是免費開源的,很不錯,建議使用。特別建議有時間,有興趣的朋友去看看。其實這個和點聚公司的那個WebOffice很像的,個人覺得點聚用的就是這個DSOFramer代碼。
除雙進以外,以上各個Office網絡文檔控件的詳細介紹、說明及演示代碼在官方網站都有下載,我就不說了,這里提供偶自己親手破解時間限制到9999年12月31號的NTKO OFFICE文檔控件4.0.0.9演示版本。
特別注意啊,這個ocx是沒有經過數字簽名的,是不能通過IE的ACTIVEX直接下載使用的,可以通過手工注冊或者做個數字簽名。這個操作就不多說了,網上教程一找一大把。
另外,各OA系統(tǒng),ERP軟件等與OA有關的軟件中一般都包含了Office網絡文檔控件,而且這些都是OEM的,可以永久免費使用,有興趣的朋友可以去找找啊。
關于NTKO OFFICE文檔控件,我這里也提供一個“中國兵器工業(yè)信息中心通達科技"的”O(jiān)ffice Anywhere 3.0"OEM的,里面的是4.0.0.6的版本,使用的時候需要在object中加入以下代碼:
<param name="MakerCaption" value="中國兵器工業(yè)信息中心通達科技">
<param name="MakerKey" value="86A1BE7CFEC466B6186E5425AFABB417B6016D68">
<param name="ProductCaption" value="Office Anywhere 3.0">
<param name="ProductKey" value="65F867689D7FF5CD02FBE4AA23764306F715A9E2">
這樣就成了OEM正式版的了。
http://www.cnblogs.com/xuneng/archive/2009/11/10/1599890.html
-----------------------------------推薦免費好用的Web在線Office(Word)編輯控件------------------------
DSOFramer2.2.0.8
dso接口說明
版本修改記錄:
V2.2.0.2修改:
修改了HttpPost相對路徑的一些問題。
V2.2.0.0增加:
[id(0x00010041), helpstring("Get Rev Index")]
HRESULT GetRevCount( [out,retval] long * pbool);
[id(0x00010042), helpstring("Get Rev Index Info")]
HRESULT GetRevInfo([in] long lIndex, [in] long lType, [out,retval] BSTR* pbool);
[id(0x00010043), helpstring("Set Doc Prop")]
HRESULT SetValue([in] BSTR strValue, [in] BSTR strName, [out,retval] long* pbool);
[id(0x00010044), helpstring("Set Doc Variable")]
HRESULT SetDocVariable([in] BSTR strVarName, [in] BSTR strValue,[in] long lOpt, [out,retval] long* pbool);
[id(0x00010045), helpstring("Save page To Doc")]
HRESULT SetPageAs([in] BSTR strLocalFile, [in] long lPageNum, [in] long lType,[out,retval] long* pbool);
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
LoadDso.js
var s = ""
s += "<OBJECT id=DSOFramer align='middle' style='LEFT: 0px; WIDTH: 100%; TOP: 0px; HEIGHT: 100%'"
s += "classid=clsid:00460182-9E5E-11D5-B7C8-B8269041DD57 codeBase=DSOFramer.ocx#Version=2,2,0,0' >"
s += "</OBJECT>"
document.write(s)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
接口文檔:
/*
1.新建
*/
//新建Word
document.all.FramerControl1.CreateNew("Word.Document");
//新建Excel
document.all.FramerControl1.CreateNew("Excel.Sheet");
/*
2.打開文件
*/
//打開制定的本地文件
document.all.FramerControl1.Open("C:\\TestBook.xls");
//制定用Word來打開c:\plain.txt文件
document.all.FramerControl1.Open("C:\\Plain.txt",false, "Word.Document");
//打開服務器的文件
document.all.FramerControl1.Open "https://secureserver/test/mytest.asp?id=123",true, "Excel.Sheet", "MyUserAccount", "MyPassword");
//打開服務器的文件
document.all.FramerControl1.Open("http://localhost/1.doc", true);
/*
3.保存文件
*/
//到本地
document.all.FramerControl1.Save("c:\\1.doc",true);
//服務器
/*增加Http協(xié)議Post上傳接口,可以Post一個動態(tài)頁面(jsp,asp,php...),由動態(tài)頁面負責解析數據
bool HttpInit();
bool HttpAddPostString(BSTR strName, BSTR strValue);
bool HttpAddPostCurrFile(BSTR strFileID, BSTR strFileName);
BSTR HttpPost(BSTR bstr);
*/
//初始化Http引擎
document.all.FramerControl1.HttpInit();
//增加Post變量
document.all.FramerControl1.HttpAddPostString("RecordID","20060102200");
document.all.FramerControl1.HttpAddPostString("UserID","李局長");
//上傳打開的文件
document.all.FramerControl1.HttpAddPostCurrFile("FileData", "文檔名.doc");
//執(zhí)行上傳動作
document.all.FramerControl1.HttpPost("http://xxxx.com/uploadfile.asp");
/*
4.修訂留痕
*/
//進入留痕狀態(tài)
document.all.FramerControl1.SetTrackRevisions(1);
//進入非留痕狀態(tài)
document.all.FramerControl1.SetTrackRevisions(0);
//接受當前修訂
document.all.FramerControl1.SetTrackRevisions(4);
/*
5.設置當前用戶
*/
document.all.FramerControl1.SetCurrUserName("張三");
/*
6.設置當前時間(筆跡留痕會顯示("Like 2006:02:07 11:11:11")
*/
document.all.FramerControl1.SetCurrTime("2006:02:07 11:11:11");
/*
7.設置和創(chuàng)建書簽,此功能比較強大,設置書簽數據、添加書簽和添加紅頭文件就靠他了
SetFieldValue(BSTR strFieldName, BSTR strValue, BSTR strCmdOrSheetName)
strFieldName:書簽名
strValue:要設置的值
strCmdOrSheetName:
命令
::ADDMARK:: 添加BookMark
::DELMARK:: 刪除這個BookMark
::GETMARK:: 定位到這個BookMark
::FILE:: 插入的是文件
::JPG:: 插入的是圖片
一般來說:WORD中書簽是做好的,可以通過此接口把外界數據設置進書簽中去。
*/
//在當前WORD位置插入標簽,標簽名為"book1",數值為"test"
document.all.FramerControl1.SetFieldValue("book1","test","::ADDMARK::");
//設置書簽"Time",數值為"2006-03-16 22:22:22"
document.all.FramerControl1.SetFieldValue("Time","2006-03-16 22:22:22","");
//在書簽位置"hongtou",插入紅頭文件"http://222.222.222.222/hongtou1.doc" 這樣,紅頭就自動插進去了
document.all.FramerControl1.SetFieldValue("hongtou","http://222.222.222.222/hongtou1.doc","::FILE::");
/*
8.設置菜單顯示情況
BOOL SetMenuDisplay(long lMenuFlag)
lMenuFlag為以下數值的組合
#define MNU_NEW 0x01
#define MNU_OPEN 0x02
#define MNU_CLOSE 0x04
#define MNU_SAVE 0x08
#define MNU_SAVEAS 0x16
#define MNU_PGSETUP 0x64
#define MNU_PRINT 0x256
#define MNU_PROPS 0x32
#define MNU_PRINTPV 0x126
*/
//只有“新建”菜單可用
document.all.FramerControl1..SetMenuDisplay(1);
//只有“打開”菜單可用
document.all.FramerControl1.SetMenuDisplay(2);
//只有“打開”和“新建”菜單可用
document.all.FramerControl1.SetMenuDisplay(3);
/*
9.保護文檔和解保護文檔
lProOrUn:1:保護文檔;0:解除保護
lProType:
wdNoProtection = -1,
wdAllowOnlyRevisions = 0,
wdAllowOnlyComments = 1,
wdAllowOnlyFormFields = 2
strProPWD:密碼
*/
//完全保護文檔,密碼為"pwd"
document.all.FramerControl1.ProtectDoc(1,1,"pwd");
//解除文檔保護
document.all.FramerControl1.ProtectDoc(0,1,"pwd");
/*
10.顯示或隱藏修訂內容
ShowRevisions(long nNewValue)
nNewValue = 0 則隱藏修訂
= 1 則顯示修訂
*/
//顯示修訂留痕
document.all.FramerControl1.ShowRevisions(1);
//隱藏修訂留痕
document.all.FramerControl1.ShowRevisions(0);
/*
11.插入合并文件,
strFieldPath 文件路徑,可以是http,ftp的路徑
pPos = 0 //當前鼠標位置
1;文件開頭
2;文件末尾
pPos的第4位為1的時候,代表插入的是圖片
InSertFile(BSTR strFieldPath, long lPos)
*/
//文件頭部插入文件
document.all.FramerControl1.InSertFile("http://XX.com/XX.doc",1);
//文件尾部插入文件
document.all.FramerControl1.InSertFile("http://XX.com/XX.doc",2);
//當前光標位置插入文件
document.all.FramerControl1.InSertFile("http://XX.com/XX.doc",0);
//文件頭部插入圖片
document.all.FramerControl1.InSertFile("http://XX.com/XX.jpg",9);
//文件尾部插入圖片
document.all.FramerControl1.InSertFile("http://XX.com/XX.jpg",10);
//當前光標位置插入圖片
document.all.FramerControl1.InSertFile("http://XX.com/XX.jpg",8);
/*
0x31. 文檔另存為
HRESULT SaveAs([in] VARIANT strFileName, [in] VARIANT dwFileFormat, [out,retval] long* pbool);
參數:
strFileName:文件本地路徑,如c:\\11.doc
dwFileFormat: 文件格式
dwFileFormat的數值為:
Excel: Type
enum XlFileFormat
{
xlAddIn = 18,
xlCSV = 6,
xlCSVMac = 22,
xlCSVMSDOS = 24,
xlCSVWindows = 23,
xlDBF2 = 7,
xlDBF3 = 8,
xlDBF4 = 11,
xlDIF = 9,
xlExcel2 = 16,
xlExcel2FarEast = 27,
xlExcel3 = 29,
xlExcel4 = 33,
xlExcel5 = 39,
xlExcel7 = 39,
xlExcel9795 = 43,
xlExcel4Workbook = 35,
xlIntlAddIn = 26,
xlIntlMacro = 25,
xlWorkbookNormal = -4143,
xlSYLK = 2,
xlTemplate = 17,
xlCurrentPlatformText = -4158,
xlTextMac = 19,
xlTextMSDOS = 21,
xlTextPrinter = 36,
xlTextWindows = 20,
xlWJ2WD1 = 14,
xlWK1 = 5,
xlWK1ALL = 31,
xlWK1FMT = 30,
xlWK3 = 15,
xlWK4 = 38,
xlWK3FM3 = 32,
xlWKS = 4,
xlWorks2FarEast = 28,
xlWQ1 = 34,
xlWJ3 = 40,
xlWJ3FJ3 = 41,
xlUnicodeText = 42,
xlHtml = 44
};
Word: Type
enum WdSaveFormat
{
wdFormatDocument = 0,
wdFormatTemplate = 1,
wdFormatText = 2,
wdFormatTextLineBreaks = 3,
wdFormatDOSText = 4,
wdFormatDOSTextLineBreaks = 5,
wdFormatRTF = 6,
wdFormatUnicodeText = 7,
wdFormatEncodedText = 7,
wdFormatHTML = 8
};
PPT:
enum PpSaveAsFileType
{
ppSaveAsPresentation = 1,
ppSaveAsPowerPoint7 = 2,
ppSaveAsPowerPoint4 = 3,
ppSaveAsPowerPoint3 = 4,
ppSaveAsTemplate = 5,
ppSaveAsRTF = 6,
ppSaveAsShow = 7,
ppSaveAsAddIn = 8,
ppSaveAsPowerPoint4FarEast = 10,
ppSaveAsDefault = 11,
ppSaveAsHTML = 12,
ppSaveAsHTMLv3 = 13,
ppSaveAsHTMLDual = 14,
ppSaveAsMetaFile = 15,
ppSaveAsGIF = 16,
ppSaveAsJPG = 17,
ppSaveAsPNG = 18,
ppSaveAsBMP = 19
};
*/
/*
0x32. 刪除本地文件
HRESULT DeleteLocalFile([in] BSTR strFilePath);
參數:
strFileName:文件本地路徑,如c:\\11.doc
*/
/*
0x33.創(chuàng)建臨時文件
HRESULT GetTempFilePath([out,retval] BSTR* strValue);
返回:
臨時文件的路徑地址。使用完后,用DeleteLocalFile 刪除
*/
/*
0x34.設置文檔顯示模式
HRESULT ShowView([in] long dwViewType, [out,retval] long * pbool);
dwViewType的可取值為:
enum WdViewType
{
wdNormalView = 1,
wdOutlineView = 2,
wdPrintView = 3,
wdPrintPreview = 4,
wdMasterView = 5, //這個是大綱
wdWebView = 6
};
*/
//大綱模式
document.all.FramerControl1.ShowView(5);
/*
0x39:下載遠程文件
HRESULT DownloadFile( [in] BSTR strRemoteFile, [in] BSTR strLocalFile, [out,retval] BSTR* strValue);
參數:
strRemoteFile:遠程路徑地址,http or Ftp
strLocalFile: 本地保存地址,if strLocalFile == NULL then Create Temp File and return TempFile's Path
*/
/*
0x40:增加Http上傳時候的,附加其他文件
HRESULT HttpAddPostFile([in] BSTR strFileID, [in] BSTR strFileName, [out,retval] long* pbool);
參數:
strFileID:文件的ID,供服務器端頁面解析
strFileName: 本地文件地址
*/
/*
0x41,0x42.獲取詳細的修訂信息。
GetRevCount( [out,retval] long * pbool);
GetRevInfo([in] long lIndex, [in] long lType, [out,retval] BSTR* pbool);
例子如下
*/
var vCount;
vCount = document.all.FramerControl1.GetRevCount();
alert(vCount);
var vOpt = 0;
var vDate;
for(var i=1; i<= vCount; i++){
vOpt = document.all.FramerControl1.GetRevInfo(i,2);
if("1" == vOpt){
vOpt = "插入";
}else if("2" == vOpt){
vOpt = "刪除";
}else{
vOpt = "未知操作";
}
vDate = new String(document.all.FramerControl1.GetRevInfo(i,1));
vDate = parseFloat(vDate);
alert(vDate);
dateObj = new Date(vDate);
alert(dateObj.getYear() + "年" + dateObj.getMonth() + 1 + "月" + dateObj.getDate() +"日" + dateObj.getHours() +"時" + dateObj.getMinutes() +"分" + dateObj.getSeconds() +"秒" );
alert("用戶:"+document.all.FramerControl1.GetRevInfo(i,0) + "\r\n操作:" + vOpt + "\r\n內容:" + document.all.FramerControl1.GetRevInfo(i,3));
}
/*
0x43.設置基本信息:
HRESULT SetValue([in] BSTR strValue, [in] BSTR strName, [out,retval] long* pbool);
1.設置文件只讀密碼
SetValue("password","::DOCPROP:PassWord");
2.設置文件修改密碼
SetValue("password","::DOCPROP:WritePW");
返回值:
0 正確
-1:不支持此命令,請確定您的第二個參數沒有傳錯
-127:異常
*/
//設置文件只讀密碼
document.all.FramerControl1.SetValue("password","::DOCPROP:PassWord");
//設置文件修改密碼
document.all.FramerControl1.SetValue("password","::DOCPROP:WritePW");
/*
0x44.設置文檔變量,這個很少能用到
HRESULT SetDocVariable([in] BSTR strVarName, [in] BSTR strValue,[in] long lOpt, [out,retval] long* pbool);
strVarName: 變量名
strVlaue:變量值
lOpt: 操作類型,
按位
第一位為1: 表示update域關聯(lián)的
第二位為1: 表示如果沒有這個變量則添加
第三位為1: 未來支持
return:
0:OK
-127:異常
*/
/*
0x45: 分頁保存
HRESULT SetPageAs([in] BSTR strLocalFile, [in] long lPageNum, [in] long lType,[out,retval] long* pbool);
strLocalFile:本地路徑
lPageNum:頁數
*/