java中jcom操作excel
16lz
2021-01-22
最近做了个用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 { } } }
更多相关文章
- Java常见对象之String
- 来谈谈JAVA面向对象 - 鲁班即将五杀,大乔送他回家??
- 对一个JavaScript对象数组进行排序。
- java使用compareTo实现一个类的对象之间比较大小
- 在Java中,使用DefaultSelenium对象在selenium中启动测试,我如何找
- Java学习第9天(6):面向对象-多态-object
- 如何在命令中传递对象参数?
- JavaScript 面向对象编程,严格过程的标准化编程法,目前为止最好的
- JAVA复习3 Java类和对象