<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    當柳上原的風吹向天際的時候...

    真正的快樂來源于創造

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks

    #

    package com.heyang;

    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.ComThread;
    import com.jacob.com.Dispatch;
    import com.jacob.com.Variant;

    public class ModifyWordDocument {
        
    public static void main(String[] args) throws Exception {
            
    // 初始化com的線程,非常重要?。∈褂媒Y束后要調用 realease方法
            ComThread.InitSTA();

            
    // 實例化ActiveX組件對象:對word進行操作
            ActiveXComponent wrdCom = new ActiveXComponent("Word.Application");

            
    // 獲取Dispatch的Documents對象
            Dispatch wrdDocs = wrdCom.getProperty("Documents").toDispatch();

            
    // 設置打開的word應用程序是否可見
            wrdCom.setProperty("Visible"new Variant(true));

            
    // 打開一個已經存在的文檔
            Dispatch doc = Dispatch.call(wrdDocs, "Open""c:\\abc.doc")
                    .toDispatch();

            
    // 獲得當前word文檔文本
            Dispatch docSelection = Dispatch.get(wrdCom, "Selection").toDispatch();

            
    // 從selection所在位置開始查詢
            Dispatch find = Dispatch.call(docSelection, "Find").toDispatch();

            
    // 設置要查找的內容
            Dispatch.put(find, "Text""測試");
            
    // 向前查找
            Dispatch.put(find, "Forward""True");
            
    // 設置格式
            Dispatch.put(find, "Format""True");
            
    // 大小寫匹配
            Dispatch.put(find, "MatchCase""True");
            
    // 全字匹配
            Dispatch.put(find, "MatchWholeWord""True");

            Dispatch.call(find, 
    "Execute").getBoolean();
            Dispatch.put(docSelection, 
    "Text""岳飛");

            
    // 另存為
            Dispatch.call(doc, "SaveAs"new Variant("C:\\abc.doc")); // 保存一個新文檔

            
    // 保存關閉
            if (doc != null) {
                Dispatch.call(doc, 
    "Save");
                Dispatch.call(doc, 
    "Close"new Variant(true));
                doc 
    = null;
            }

            
    // 關閉word文件
            wrdCom.invoke("Quit"new Variant[] {});
            
    // 釋放com線程。根據jacob的幫助文檔,com的線程回收不由java的垃圾回收器處理
            ComThread.Release();
        }
    }
    posted @ 2011-06-03 11:42 何楊 閱讀(963) | 評論 (0)編輯 收藏

    package com.heyang;

    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.ComThread;
    import com.jacob.com.Dispatch;
    import com.jacob.com.Variant;


    public class CreateWordDocument{
        
    public static void main(String[] args) throws Exception{
            
    // 初始化com的線程,非常重要??!使用結束后要調用 realease方法
            ComThread.InitSTA();
            
            
    // 實例化ActiveX組件對象:對word進行操作
            ActiveXComponent wrdCom= new ActiveXComponent("Word.Application");
            
            
    // 獲取Dispatch的Documents對象
            Dispatch wrdDocs=wrdCom.getProperty("Documents").toDispatch();
            
            
    // 設置打開的word應用程序是否可見
            wrdCom.setProperty("Visible"new Variant(true));
            
            
    // 創建一個新的文檔
            Dispatch doc = Dispatch.call(wrdDocs, "Add").toDispatch();
            
            
    // 獲得當前word文檔文本
            Dispatch docSelection = Dispatch.get(wrdCom, "Selection").toDispatch();
            
            
    // 輸入文字
            Dispatch.put(docSelection, "Text""測試Text");

            
    // 另存為
            Dispatch.call(doc, "SaveAs"new Variant("C:\\abc.doc")); // 保存一個新文檔

            
    // 保存關閉
            if (doc != null) {
                Dispatch.call(doc, 
    "Save");
                Dispatch.call(doc, 
    "Close"new Variant(true));
                doc 
    = null;
            }
            
            
    // 關閉word文件
            wrdCom.invoke("Quit"new Variant[] {});        
            
    // 釋放com線程。根據jacob的幫助文檔,com的線程回收不由java的垃圾回收器處理
            ComThread.Release();
        }
    }
    posted @ 2011-06-03 11:16 何楊 閱讀(400) | 評論 (0)編輯 收藏

    用途:使用Java操作Office組件如Word,Excel等。
    官方網址:http://danadler.com/jacob/
    1.9版本下載頁:http://download.csdn.net/source/709878
    也可以從我的地址下載:http://www.tkk7.com/Files/heyang/jacob-Successfully.rar

    使用方法:
    jacob.jar放到包路徑中;
    jacob.dll放到C:\WINDOWS\system32下,有時有不配合出錯的文件,網上給出解決方案是用1.7的jar配合1.9的dll使用,我試了一下效果還可以。

    相關介紹文章:
    http://blog.csdn.net/hemingwang0902/archive/2009/07/25/4377994.aspx
    http://blog.csdn.net/helloxtayfnje/archive/2009/12/04/4935037.aspx
    http://ishare.iask.sina.com.cn/f/7936765.html?from=like
    http://jeady.blog.hexun.com/13957703_d.html
    http://blog.csdn.net/Matol/archive/2010/11/26/6038087.aspx
    http://hi.baidu.com/mingfang0219/blog/item/9648822c5469173a349bf701.html
    posted @ 2011-06-02 21:04 何楊 閱讀(293) | 評論 (0)編輯 收藏

               this.getJdbcTemplate().execute(
                    
    new CallableStatementCreator() {
                        
    public CallableStatement createCallableStatement(Connection con) throws SQLException {
                            String storedProc 
    = "{call updatetractractcode(?, ?)}";// 調用的存儲過程
                            CallableStatement cs = con.prepareCall(storedProc);
                            cs.setInt(
    1, contractId);// 設置輸入參數的值
                            cs.registerOutParameter(2, java.sql.Types.INTEGER);// 注冊輸出參數的類型
                            return cs;
                        }
                    }, 
    new CallableStatementCallback() {
                        
    public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
                            cs.execute();
                            
    return cs.getString(2);// 獲取輸出參數的值
                    }
                });
    posted @ 2011-06-02 09:05 何楊 閱讀(1141) | 評論 (0)編輯 收藏

    幾個使用JDBC Template常用的工具類

    第一:IntegerRowMapper

    代碼:

    public class IntegerRowMapper implements RowMapper {

          public Object mapRow(ResultSet rs, int index) throws SQLException {

                Integer c = new Integer(0);

                c = rs.getInt(1);

                return c;

          }

    }

    用途:

    SQL只是取數量時,可以采用這個類減少一些代碼,示例如下:

    StringBuilder sb=new StringBuilder();

    sb.append("    SELECT");

    sb.append("        count(*)");

    sb.append("    FROM");

    sb.append("        tb_contract");

    sb.append("    WHERE");

    sb.append("        contract_id='"+id+"' ");

    String sql=sb.toString();

     

    List<?> ls = this.getJdbcTemplate().query(sql, (new IntegerRowMapper()));

    Integer i = (Integer) ls.get(0);

     

    第二:StringRowMapper

    代碼:

    public class StringRowMapper implements RowMapper {

          public Object mapRow(ResultSet rs, int index) throws SQLException {

                String c=new String(rs.getString(1));

            return c;

          }

    }

    用途:當SQL語句只返回一個字符串類型的定值時,采用這個類能減少部分代碼,示例如下:

    StringBuilder sb=new StringBuilder();

    sb.append("    select");

    sb.append("         user_name as name");

    sb.append("    from");

    sb.append("        TB_SYS_USER");

    sb.append("    where");

    sb.append("         user_id='"+userId+"'");

    String sql=sb.toString();

     

    List<?> ls = this.getJdbcTemplate().query(sql, (new StringRowMapper()));

    String usrName=(String)ls.get(0);

     

    第三:RecordCounter

    代碼:

    public class RecordCounter{

          private String sql;

         

          private JdbcTemplate jdbcTemplate;

         

          /**

           * 構造函數

           * @param sql

           * @param jdbcTemplate

           */

          public RecordCounter(String sql,JdbcTemplate jdbcTemplate){

                this.sql=sql;

                this.jdbcTemplate=jdbcTemplate;

          }

         

          /**

           * 得到SQL語句查詢到的記錄數,對外的關鍵語句

           * @author: 何楊(heyanghy@cn.ibm.com

           * @date : Apr 23, 2011

           * @time : 11:09:35 AM

           * @return

           */

          public int getCount() throws Exception{

                StringBuilder sb=new StringBuilder();

                sb.append("    select ");

                sb.append("        count(*) as recordCount ");

                sb.append("    from ("+sql+") t ");

                String sql=sb.toString();

               

                class MyRowMapper implements RowMapper {

                      public Object mapRow(ResultSet rs, int index) throws SQLException {

                            Integer c = new Integer(0);

     

                            c=rs.getInt("recordCount");

     

                            return c;

                      }

                }

     

                List<?> ls = jdbcTemplate.query(sql, (new MyRowMapper()));

                Integer i=(Integer)ls.get(0);

               

                return i.intValue();

          }

    }

    用途:分頁時常需要得到SQL語句查詢得到的總記錄數,采用這個類可以減少部分代碼。

    示例:略

     

    第四:MapRowMapper

    代碼:

    public class MapRowMapper implements RowMapper {

          public Object mapRow(ResultSet rs, int index) throws SQLException {

                List<Map<String,String>> ls=new ArrayList<Map<String,String>>();

           

            int n=rs.getMetaData().getColumnCount();

           

            for(int i=1;i<=n;i++){

                try{

                      Map<String,String> map=new HashMap<String,String>();

                      map.put(rs.getMetaData().getColumnName(i).toLowerCase(), rs.getString(i));

                     

                      ls.add(map);

                }

                catch(Exception ex){

                      continue;

                }

            }

           

            return ls;

          }

    }

    用途:一般來說,當查詢只會返回一條記錄時,如按ID得到一條記錄,會使用這個Mapping器。得到的對象可以用來給對象賦值。示例如下:

    StringBuilder sb=new StringBuilder();

    sb.append("    select");

    sb.append("        *");

    sb.append("    from");

    sb.append("        TB_CONTRACT ");

    sb.append("    where");

    sb.append("        contract_id='"+id+"'");

    String sql=sb.toString();

     

    List<?> ls = this.getJdbcTemplate().query(sql, (new MapRowMapper()));

     

    Map<String,String> map = new HashMap<String,String>();

     

    List<?> ls2=(List<?>)ls.get(0);

     

    for(Object obj:ls2){

          Map<String,String> mapTemp=(Map<String,String>)obj;

         

          map.putAll(mapTemp);

    }

    第五:NameValueRowMapper

    代碼:

    public class NameValueRowMapper implements RowMapper {

          public Object mapRow(ResultSet rs, int index) throws SQLException {

                List<NameValue> ls=new ArrayList<NameValue>();

           

            int n=rs.getMetaData().getColumnCount();

           

            for(int i=1;i<=n;i++){

                NameValue nv=new NameValue(rs.getMetaData().getColumnName(i).toLowerCase(),rs.getString(i));

                ls.add(nv);

            }

           

            return ls;

          }

    }

     

    public class NameValue extends BaseDomainObj{

          private String name;

          private String value;

         

          /**

           * 無參數構造函數

           */

          public NameValue(){

               

          }

         

          /**

           * 雙參數構造函數

           * @param name

           * @param value

           */

          public NameValue(String name,String value){

                this.name=name;

                this.value=value;

          }

         

          public String getName() {

                return name;

          }

          public void setName(String name) {

                this.name = name;

          }

          public String getValue() {

                return value;

          }

          public void setValue(String value) {

                this.value = value;

          }

         

          public String asXML() {

                StringBuilder sb=new StringBuilder();

               

                sb.append("<"+name+">");

                sb.append(StringUtils.isBlank(value)?"-":value);

                sb.append("</"+name+">");

               

                return sb.toString();

          }

    }

     

    public class NameValueList extends BaseDomainObj{

          // 內含NameValue的鏈表

          private List<?> list;

         

          /**

           * 無參數構造函數

           */

          public NameValueList(){

               

          }

         

          /**

           * 帶參數構造函數

           * @param list

           */

          public NameValueList(List<?> list){

                this.list=list;

          }

         

          @SuppressWarnings("unchecked")

          public String asXML() {

                StringBuilder sb=new StringBuilder();

               

               

                for(Object obj:list){

                      List<NameValue> ls=(List<NameValue>)obj;

                     

                      sb.append("<node>");

                      for(NameValue nv:ls){

                            sb.append(nv.asXML());

                      }

                      sb.append("</node>");

                }

               

               

                return sb.toString();

          }

     

          public void setList(List<?> list) {

                this.list = list;

          }

     

          public List<?> getList() {

                return list;

          }

    }

    說明:將一行記錄轉化成一個包含鍵值對的鏈表,在NameValueList的幫助下能方便的把從數據庫得到的行集轉化為一段XML;

    StringBuilder sb=new StringBuilder();

    sb.append("    SELECT ");

    sb.append("        *");

    sb.append("    FROM tb_contract ");

    sb.append("    WHERE contract_id='"+id+"'");

    String sql=sb.toString();

     

    List<?> ls=this.getJdbcTemplate().query(sql,new NameValueRowMapper());

     

    NameValueList list=new NameValueList(ls);

     

    String xml=list.asXML();

     

     

     

     

     

    posted @ 2011-06-01 18:17 何楊 閱讀(545) | 評論 (0)編輯 收藏

    例如,父窗體中有一個JS方法名為showText(text),則在子窗體中,調用這個函數的方法是:
    this.opener.showText("123ABC");
    posted @ 2011-05-30 16:15 何楊 閱讀(262) | 評論 (0)編輯 收藏

         摘要: 當一個div是以絕對定位方式,采用display="block"方式將其顯示時,會發生select框出現在div上方的情況,這時的解決辦法是在div放置一個iframe,具體代碼如下(粗體部分是不被select遮擋的核心代碼,另需要注意的是,有時要用JavaScript調整iframe的高度和寬度?。篊ode highlighting produced by Actipro CodeHighli...  閱讀全文
    posted @ 2011-05-29 12:55 何楊 閱讀(2346) | 評論 (0)編輯 收藏

    具體如下:
    <bean:write name="log" property="nextActivity" filter="false"/>

    如果nextActivity中有HTML如<br>,<div>等需要按照HTML顯示的話,必須加上
    屬性filter="false",否則會把<br>,<div>這種文本內容顯示出來。

    posted @ 2011-05-29 11:21 何楊 閱讀(1371) | 評論 (3)編輯 收藏

    以前我們使用+或則concat對列進行合并,但將行合并就需要程序的支持,如Java或是PL/SQL,這樣做有時可能會帶來一些小麻煩。
    如果是Oracle數據庫的話,借助wmsys.wm_concat函數的幫助,可以對行進行合并:
    如某用戶表有如下數據:


    使用SQL:
    select  wmsys.wm_concat(name) from EMP
    的效果如下:


    也就是說wmsys.wm_concat能將行合并起來,并用逗號分隔開來。在取子類別,一對多關系中一方取多方數據時這個函數能起到事半功倍的效果。

    凡事總有解決之道,所以要保持沉穩,堅強和自信。
    posted @ 2011-05-29 11:00 何楊 閱讀(643) | 評論 (0)編輯 收藏

    這種方法還是比較迅速的,具體用法請見下面代碼:

    <html>
        
    <head>
            
    <title>test</title>
        
    </head>
        
    <body>
            
    <id="link" href="www.baidu.com">百度</a>
            
    <input type="button" onclick="showLinkText()" value="顯示鏈接文字"/>
        
    </body>
    </html>

    <script language="javascript">
    <!--
    function $(id){
        
    return document.getElementById(id);
    }

    //-- 顯示鏈接文字
    function showLinkText(id){
        alert($(
    "link").innerText);    
    }

    //-->
    </script>

    少看電視少上網,少看閑書少扯談。
    posted @ 2011-05-29 10:37 何楊 閱讀(287) | 評論 (0)編輯 收藏

    僅列出標題
    共28頁: First 上一頁 9 10 11 12 13 14 15 16 17 下一頁 Last 
    主站蜘蛛池模板: 香蕉视频免费在线播放| a级毛片毛片免费观看久潮| 免费看国产精品麻豆| 男女拍拍拍免费视频网站| 亚洲综合亚洲国产尤物| 女人毛片a级大学毛片免费| 国产精品hd免费观看| 亚洲欧洲另类春色校园小说| 日本高清免费aaaaa大片视频| 久久国产免费直播| 亚洲专区中文字幕| 亚洲色一色噜一噜噜噜| 国产91免费在线观看| 毛片基地看看成人免费| 亚洲色偷偷色噜噜狠狠99网| 亚洲日韩av无码| 午夜一级免费视频| 人妻无码久久一区二区三区免费| 亚洲AV无码一区二区三区久久精品| 国产AV无码专区亚洲AV毛网站 | 国产精品嫩草影院免费| 日本高清免费观看| 国产精品亚洲AV三区| 久久亚洲AV成人无码电影| 免费永久国产在线视频| 在线观看免费人成视频色9| a毛片免费全部在线播放**| 亚洲国产精品无码第一区二区三区| 亚洲AV无码不卡无码| 亚洲高清成人一区二区三区| 日韩欧美一区二区三区免费观看 | 日韩免费一区二区三区在线 | 动漫黄网站免费永久在线观看 | 成人男女网18免费视频| 免费无码又爽又刺激高潮视频 | 中文在线观看免费网站| 国产亚洲精品VA片在线播放| 亚洲精品成人片在线观看精品字幕| 国产一级理论免费版| 免费看黄视频网站| 91大神在线免费观看|