首页新闻体育娱乐视频财经科技汽车房产游戏女性读书校园天气短信邮箱搜索导航
通行证登录
科技时代新浪首页 > 科技时代 > 技术 > 菜鸟Java入门手册专题 > 正文

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


http://www.sina.com.cn 2005年04月27日 09:08 天极yesky

  接着使用自动化(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(nRow,9).Value("=RC[-2]*RC[-1]/100");
 xlRange.Item(nRow,10).Value("=RC[-3]+RC[-1]");
 xlRange.Item(nRow,11).Value("=RC[-4]*((100-RC[2])/100)");
}

  在列表2的第一部分中,其目标是获取希望修改的单元格的控制权。这会花费了一定的开销。

  · 首先你必须获取表现Excel本身的对象,有了JCOM辅助类的帮助以后,这一步操作相当直接。

ExcelApplication excel = new ExcelApplication(rm);
  
  · 下一步,你希望获取对工作薄集合的访问权。你希望打开自己的模板工作薄(本示例中这个模板在C:\sales.xls中),在工作薄集合中打开它。

ExcelWorkbooks xlBooks = excel.Workbooks();

  · 下一步,你希望打开自己的工作薄并获取该工作薄集合的引用。

ExcelWorkbook xlBook = xlBooks.Open("c:\sales.xls");
ExcelWorksheets xlSheets = xlBook.Worksheets();

  · 最后,你希望获取集合中的第一个工作表,并把工作范围定义为整个工作表。

ExcelWorksheet xlSheet = xlSheets.Item(1);
ExcelRange xlRange = xlSheet.Cells();

  完成这些工作以后,你的xlRange对象将允许你在单元中放入值和公式了。通过在前面的记录集(从提交给数据库的SQL命令中返回的)中循环,使用xlRange.Item(nRow,nCol).Value("whatever")语法,逐行逐列地把记录集中的值插入到电子表格中(语法中的whatever来自于记录集)。通过使用rs.getObject(i).toString可以得到当前行中I列的值。通过使用rs.movenext(),当前行一直向后移 动,直到记录集的末尾。

  你在列表2中可能会注意到一个奇怪的函数调用:

nCol = getExcelColumn(i);

  这是一个简单的辅助函数,它把记录集中的列编号与Excel中存放数据的位置进行匹配。例如,如果你再次查看上面的SQL语句,佣金费率将返回到第8列。在电子表格中,存放它的列是第13列。这个函数用于处理两者之间的转换。更复杂的应用程序可以使用Excel中的命名(named)范围来匹配列,但是这超出了本文的范围。

[上一页] [1] [2] [3] [4]


  点击此处查询全部java新闻

评论】【应用软件论坛】【 】【打印】【下载点点通】【多种方式看新闻】【收藏】【关闭

 
新 闻 查 询
关键词
缤 纷 专 题
红色专题
红色专题图铃免费
摩登老人
摩登原始人登场啦
图铃狂搜:
更多专题 缤纷俱乐部
 
 


科技时代意见反馈留言板 电话:010-82628888-5828   欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2005 SINA Inc. All Rights Reserved

版权所有 新浪网