快速业务通道

Java中使用JCOM操作Office对象 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-25
。在图1中,Sheet 1是第一个工作表,因此你可以使用xlSheets.Item(1)来获取对它的引用。

有了工作表之后,你就可以使用range(范围)来操作它上面的数据。Range是一个单元格或多个单元格。例如,单元格A1可以使用range (1,1)来引用,接着可以使用Value属性把数据载入单元格中。

更有意义的例子

假设你希望把Excel作为数据库中某些数据的表现层。在Java中你希望通过JDBC获取数据,并把数据显示在Excel前端。这种假设是很好的,因为复杂业务逻辑中的用例(use case)已经用Excel前端显示了,更不用说工作流中的其它的数据项的显示和交互操作了。现在你不需要了解业务逻辑或分析,就可以使用原始的电子表格,并使用Java中的自动化来"填充它们之间的裂痕"。

我将给出一个演示这种操作的简单示例:本文下载中所包含的内容是建立比较销售行为的一个简单的MySQL数据库的。它有三个表:

· Sales是销售的细节信息,包括销售项、数量、销售价格、是谁销售的以及销售地区。

· People包含销售人员的姓名和佣金。

· Districts包含了销售地区的名称和税率。

生成报表的时候,你需要使用下面的业务逻辑来算出真正的数值:

· 毛销售额等于销售项乘以销售价格加上地税金额。

· 纯销售额等于毛销售额减去销售人员提取的税前佣金。

这都是一些在Java中可以实现的简单直接的计算过程,但是我在本文中使用它们的目的是演示如何把这些数据写入Excel电子表格并让Excel自动计算。对于更复杂的情况(使用了更复杂的Excel公式),原理也是一样的。

此外,下载的内容中还包含了如图2所示的电子表格。它是作为"模板"供你填充适当的数据的电子表格。

图2:用于前端填充数据的Excel模板

Java中使用JCOM操作Office对象(2)

时间:2009-11-02 天极

使用JCOM的时候,查询数据库中所有销售数据需要使用下面的SQL:

SELECT sales.id, sales.description, sales.quantity, sales.price, districts.districtname,districts.salestax,people.name,people.commission FROM ''sales'',''districts'',''people'' WHERE (sales.district = districts.id) AND (sales.salesperson = people.id)

接着使用自动化(automation)把每条记录都写入Excel电子表格的适当的列中。下载的内容中包含了完整的代码(列表2所示)。在下面的部分,我将为你解释代码中使用JCOM的自动化部分。

列表2:从数据库中获取数据并载入Excel中的代码

// 首先建立Excel的引用 ExcelApplication excel = new ExcelApplication(rm); // 使它可视 excel.Visible(true); // 接着打开我们将使用的模板工作薄 ExcelWorkbooks xlBooks = excel.Workbooks(); ExcelWorkbook xlBook = xlBooks.Open("c:\\sales.xls"); // 接着获取我们将修改的范围的引用 ExcelWorksheets xlSheets = xlBook.Worksheets(); ExcelWorksheet xlSheet = xlSheets.Item(1); ExcelRange xlRange = xlSheet.Cells(); … // 此处放置数据库链接和查询建立代码 … if (stmt.execute(strSql)) {  rs = stmt.getResultSet(); } int nColCount = rs.getMetaData().getColumnCount(); int nRow=1; int nCol=0; // 在记录集中循环 while(rs.next()) {  // 记录集中的每行都是电子表格中的一行  nRow++;  for(int i=1;i<=nColCount;i++)  {   // 匹配DB列和电子表格列   nCol = getExcelColumn(i);   // 查找于行和列对应的单元格,并把它设置为适当的记录集字段   xlRange.Item(nRow,nCol).Value(rs.getObject(i).toString());  }  // 填入公式  xlRange.Item(nRow,7).Value("=RC[-2]*RC[-1]");  xlRange.Item(

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号