當(dāng)柳上原的風(fēng)吹向天際的時(shí)候...

          真正的快樂(lè)來(lái)源于創(chuàng)造

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            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的線程,非常重要!!使用結(jié)束后要調(diào)用 realease方法
                  ComThread.InitSTA();

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

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

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

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

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

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

                  
          // 設(shè)置要查找的內(nèi)容
                  Dispatch.put(find, "Text""測(cè)試");
                  
          // 向前查找
                  Dispatch.put(find, "Forward""True");
                  
          // 設(shè)置格式
                  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")); // 保存一個(gè)新文檔

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

                  
          // 關(guān)閉word文件
                  wrdCom.invoke("Quit"new Variant[] {});
                  
          // 釋放com線程。根據(jù)jacob的幫助文檔,com的線程回收不由java的垃圾回收器處理
                  ComThread.Release();
              }
          }
          posted @ 2011-06-03 11:42 何楊 閱讀(969) | 評(píng)論 (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的線程,非常重要!!使用結(jié)束后要調(diào)用 realease方法
                  ComThread.InitSTA();
                  
                  
          // 實(shí)例化ActiveX組件對(duì)象:對(duì)word進(jìn)行操作
                  ActiveXComponent wrdCom= new ActiveXComponent("Word.Application");
                  
                  
          // 獲取Dispatch的Documents對(duì)象
                  Dispatch wrdDocs=wrdCom.getProperty("Documents").toDispatch();
                  
                  
          // 設(shè)置打開的word應(yīng)用程序是否可見
                  wrdCom.setProperty("Visible"new Variant(true));
                  
                  
          // 創(chuàng)建一個(gè)新的文檔
                  Dispatch doc = Dispatch.call(wrdDocs, "Add").toDispatch();
                  
                  
          // 獲得當(dāng)前word文檔文本
                  Dispatch docSelection = Dispatch.get(wrdCom, "Selection").toDispatch();
                  
                  
          // 輸入文字
                  Dispatch.put(docSelection, "Text""測(cè)試Text");

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

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

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

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

          相關(guān)介紹文章:
          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 何楊 閱讀(299) | 評(píng)論 (0)編輯 收藏

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

          幾個(gè)使用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只是取數(shù)量時(shí),可以采用這個(gè)類減少一些代碼,示例如下:

          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;

                }

          }

          用途:當(dāng)SQL語(yǔ)句只返回一個(gè)字符串類型的定值時(shí),采用這個(gè)類能減少部分代碼,示例如下:

          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;

               

                /**

                 * 構(gòu)造函數(shù)

                 * @param sql

                 * @param jdbcTemplate

                 */

                public RecordCounter(String sql,JdbcTemplate jdbcTemplate){

                      this.sql=sql;

                      this.jdbcTemplate=jdbcTemplate;

                }

               

                /**

                 * 得到SQL語(yǔ)句查詢到的記錄數(shù),對(duì)外的關(guān)鍵語(yǔ)句

                 * @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();

                }

          }

          用途:分頁(yè)時(shí)常需要得到SQL語(yǔ)句查詢得到的總記錄數(shù),采用這個(gè)類可以減少部分代碼。

          示例:略

           

          第四: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;

                }

          }

          用途:一般來(lái)說(shuō),當(dāng)查詢只會(huì)返回一條記錄時(shí),如按ID得到一條記錄,會(huì)使用這個(gè)Mapping器。得到的對(duì)象可以用來(lái)給對(duì)象賦值。示例如下:

          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;

               

                /**

                 * 無(wú)參數(shù)構(gòu)造函數(shù)

                 */

                public NameValue(){

                     

                }

               

                /**

                 * 雙參數(shù)構(gòu)造函數(shù)

                 * @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{

                // 內(nèi)含NameValue的鏈表

                private List<?> list;

               

                /**

                 * 無(wú)參數(shù)構(gòu)造函數(shù)

                 */

                public NameValueList(){

                     

                }

               

                /**

                 * 帶參數(shù)構(gòu)造函數(shù)

                 * @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;

                }

          }

          說(shuō)明:將一行記錄轉(zhuǎn)化成一個(gè)包含鍵值對(duì)的鏈表,在NameValueList的幫助下能方便的把從數(shù)據(jù)庫(kù)得到的行集轉(zhuǎn)化為一段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 何楊 閱讀(548) | 評(píng)論 (0)編輯 收藏

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

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

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

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

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

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


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


          也就是說(shuō)wmsys.wm_concat能將行合并起來(lái),并用逗號(hào)分隔開來(lái)。在取子類別,一對(duì)多關(guān)系中一方取多方數(shù)據(jù)時(shí)這個(gè)函數(shù)能起到事半功倍的效果。

          凡事總有解決之道,所以要保持沉穩(wěn),堅(jiān)強(qiáng)和自信。
          posted @ 2011-05-29 11:00 何楊 閱讀(646) | 評(píng)論 (0)編輯 收藏

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

          <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>

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

          僅列出標(biāo)題
          共28頁(yè): First 上一頁(yè) 9 10 11 12 13 14 15 16 17 下一頁(yè) Last 
          主站蜘蛛池模板: 达孜县| 晴隆县| 宜兴市| 喜德县| 临桂县| 抚顺市| 定州市| 额济纳旗| 垫江县| 军事| 宝山区| 荥阳市| 昆明市| 山阴县| 四平市| 文安县| 商河县| 龙泉市| 内乡县| 赣榆县| 赤城县| 喜德县| 邵东县| 卢氏县| 特克斯县| 原阳县| 乌鲁木齐市| 稷山县| 华蓥市| 阳谷县| 西华县| 柘城县| 全椒县| 库车县| 新疆| 中山市| 酉阳| 图们市| 小金县| 临沧市| 太白县|