最近做了个用jcom操作excel的实例给大家分享下:

jcom中嘴重要的理解put(),和method()方法。

比较简单也比较难 :

设置方法put("属性名称","值");

动作方法method("动作名称","Object对象");

可以说OFFIC能实现的功能jcom都能实现,可见jcom的强大,它直接调用offic对象。

难的是对excel对象的理解,这里的对象很多,要对照帮助文档。


 
package JCOM;

import jp.ne.so_net.ga2.no_ji.jcom.IDispatch;
import jp.ne.so_net.ga2.no_ji.jcom.ReleaseManager;package JCOM;

import jp.ne.so_net.ga2.no_ji.jcom.IDispatch;
import jp.ne.so_net.ga2.no_ji.jcom.ReleaseManager;
import jp.ne.so_net.ga2.no_ji.jcom.excel8.*;


public class JcomExcelSample1 {
 

 public static void main(String[] args) throws Exception {
  ReleaseManager rm = new ReleaseManager();//查找JCOM能够操作的组件
 
  try {
   
   System.out.println("EXCEL loading...");
         java.util.Date fileDate = new java.util.Date();
         
         FileUtil fu = new FileUtil();
         //原始模板文件
         String srcExcelFile = "c:\\hxtz.xls";
         
         //临时生成文件
         String desFile = fileDate.getTime() + ".xls";
         String desExcelFile = "c:\\" + desFile;
         fu.copyFile(srcExcelFile, desExcelFile);
 
   ExcelApplication excel = new ExcelApplication(rm); 
   //excel.Visible(true); 
   ExcelWorkbooks xlBooks = excel.Workbooks(); 
   ExcelWorkbook xlBook = xlBooks.Open(desExcelFile); //打开文件
   
   //excel表对象集合
   ExcelWorksheets xlSheets = xlBook.Worksheets(); 
   
   //excel表对象
   ExcelWorksheet xlSheet = xlSheets.Item(2); 
   
   //excel的单元格对象集合
   ExcelRange xlCell = xlSheet.Cells(); 
 
   //局部复制
   ExcelWorksheet sheet1  = xlSheets.Item(xlSheets.Count()-2);//先建立表对象
   sheet1.Range("A1:D38").Copy(xlSheet.Range("A39"));
   //复制表
   sheet1.Copy("Sheet1");
   //复制把表复制到指定位置
   sheet1.method("copy", new Object[]{xlSheets.Item(1)});
   
   //修改sheet名称
   IDispatch idbook = (IDispatch)sheet1;//ExcelWorksheet对象转换成IDispatch
   idbook.put("Name","xx");
   
   //添加
   IDispatch cells = (IDispatch) xlSheet.get("Cells", new Object[] { new Integer(3),new Integer(1)});//获取sheet表中的所以cell对象
   cells.put("Value", "cells");
   
   //通过xlCell添加
   xlCell.Item(15,1).Value("Hello, World!" );
    
   //向指定的单元格中添加值
   IDispatch range = (IDispatch)xlSheet.get("Range",new Object[]{"C3"});//get获取sheet指定单元格对象
   range.put("Value", "sdfsdfdsf");
   //水平对齐
   range.put("HorizontalAlignment", -4131);//水平左对齐
   range.put("HorizontalAlignment", -4152);//水平右对齐
   range.put("HorizontalAlignment", -4108);//水平中对齐
   //上下对齐
   range.put("VerticalAlignment", -4160);//垂直居中
   range.put("VerticalAlignment", -4107);//垂直居下
   
   
   //划线
   IDispatch shapes = (IDispatch)xlSheet.get("Shapes");
   shapes.method("AddLine",new Object[]{100, 100, 200, 200} );
   
   //输出单元格类容
   System.out.println("--"+cells.get("text").toString());
   //得到sheet表数量
   int count = xlSheets.Count();
   
   //IDispatch HPageBreaks = (IDispatch)xlSheet.get("HPageBreaks");
    
   //边框
   IDispatch border;
   border = (IDispatch)xlSheet.Range("A1:D19").get("Borders");
   border.put("LineStyle", -4142);
   
   //设置可打印区域,此函数用于在填写表格完成后,打印时出现可空白的页面
   IDispatch PageSetup = (IDispatch)xlSheet.get("PageSetup");
   
   //是否显示拼音指南,这个用来调整行间距
   IDispatch Phonetics = (IDispatch)cells.get("Phonetics");
   Phonetics.put("Visible", true);
   
   //设置单元格内子字串的字体和颜色

   IDispatch sub;
   IDispatch subFont;
   String strTmp = "核销时间:2012年4月25日                  编号:2";
   cells= (IDispatch)xlSheet.get("Cells",new Object[]{new Integer(3),new Integer(1)});//确定表格
   //object 参数1开始位置,参数2长度
   sub = (IDispatch)cells.get("Characters", new Object[]{strTmp.indexOf("核")+1,strTmp.indexOf("间")+2});//确定要改的数组
   subFont = (IDispatch)sub.get("Font");
   subFont.put("Name", "黑体");
   subFont.put("Color", 225);


   //关闭保存文件
   
   xlBook.Save();
   xlBook.Close(false, null, false);
   xlBooks.Close();
   excel.Quit();
   rm.release();  
   rm = null;   

  } catch (Exception e) {
   e.printStackTrace();
  } finally {

  }
 }

}

 
 
 
 


更多相关文章

  1. Java常见对象之String
  2. 来谈谈JAVA面向对象 - 鲁班即将五杀,大乔送他回家??
  3. 对一个JavaScript对象数组进行排序。
  4. java使用compareTo实现一个类的对象之间比较大小
  5. 在Java中,使用DefaultSelenium对象在selenium中启动测试,我如何找
  6. Java学习第9天(6):面向对象-多态-object
  7. 如何在命令中传递对象参数?
  8. JavaScript 面向对象编程,严格过程的标准化编程法,目前为止最好的
  9. JAVA复习3 Java类和对象

随机推荐

  1. 如何创建自己的wiki-Dokuwiki
  2. 如何在php数组中插入新的键值对?
  3. 如何使用PHP在表单中找到移动复制
  4. Wordpress查询另一个wordpress数据库for
  5. PHP 10个常见面试题及答案
  6. PHP写的在线计算器,欢迎指正
  7. PHP结合memcacheq消息队列解决并发问题
  8. PHP数组值进入第二个数组[重复]
  9. 在PHP中,为什么没有显示解析错误?
  10. 用PHP regex删除MySQL查询中的所有值?