需求 :  最近要实现一个Excel 在线编辑的功能 ,所以使用 Dsoframer 控件 。
      版本 :  网上暂时可以找到的可用于office 2007以上并且包含源码而且比较干净的版本是2.3.0.1.
      安装 : 写了个安装和卸载脚本 ,方便用户安装 ,其实也只有一句话而已 
                安装:
                regsvr32 dsoframer.ocx
                卸载:
                regsvr32 /u dsoframer.ocx
      调用方法 :
                页面代码:
                <OBJECT classid="clsid:00460182-9E5E-11D5-B7C8-B8269041DD57" id="FramerControl1" style="LEFT:0px; TOP:0px; WIDTH:100%; HEIGHT:100%" CodeBase="dsoframer.ocx#version=2,3,0,1">
                    <PARAM NAME="_ExtentX" VALUE="6350">
                    <PARAM NAME="_ExtentY" VALUE="6350">
                    <PARAM NAME="BorderColor" VALUE="-2147483632">
                    <PARAM NAME="BackColor" VALUE="-2147483643">
                    <PARAM NAME="ForeColor" VALUE="-2147483640">
                    <PARAM NAME="TitlebarColor" VALUE="-2147483635">
                    <PARAM NAME="TitlebarTextColor" VALUE="-2147483634">
                    <PARAM NAME="BorderStyle" VALUE="1">
                    <PARAM NAME="Titlebar" VALUE="0">
                    <PARAM NAME="Toolbars" VALUE="0">
                    <PARAM NAME="Menubar" VALUE="0">
        </OBJECT>
            Titlebar ,Toolbars ,Menubar 全都设为 0 , 把所有工具条都隐藏。

          打开在线文档 
          FramerControl1.DownloadFile(url,"C:\\temp\\"+record.getValue("clientFilename"));  //先下载到本地
          FramerControl1.Open("C:\\temp\\"+record.getValue("clientFilename"), false,"Excel.Sheet"); // 再打开本地文档
          本来想直接 用 FramerControl1.Open(url, false,"Excel.Sheet");  
          但是会弹出
           
         暂时不知道如果解决 ,只好这样写了。
         保存Excel数据 :  要保存到数据库
                  FramerControl1.HttpInit();
                  FramerControl1.HttpAddPostCurrFile("FileData", record.getValue("clientFilename"));
                  FramerControl1.HttpPost("<%=basePath%>servlet/UploadTaskDataServlet?id=<%=request.getParameter("bizId") %>");
         Servlet 用SmartUpload (我也想用 CommonUpload  , 但是原来是这样写 的 ,懒得去加jar包)
         SmartUpload mySmartUpload = new SmartUpload();
        try {
            mySmartUpload.initialize(config, request, response); // Initialization
            mySmartUpload.upload();// Upload
            SmartFiles files = mySmartUpload.getFiles();
            if (files != null && files.getCount() > 0) {
                for (int i = 0, s = files.getCount(); i < s; i++) {
                    //取得上传文件
                    SmartFile myFile = mySmartUpload.getFiles().getFile(i);// Retreive
                    // the
                    // current
                    // file
                    // Save it only if this file exists
                    if (!myFile.isMissing()) {
                        String path = request.getSession().getServletContext().getRealPath("/")+ "export/";
                        myFile.saveAs(path + myFile.getFileName());
                         .....................
            编辑窗口关闭时关闭Excel进程 : FramerControl1.Close();