Java技术中Excel报表的应用研究

所属栏目:计算机应用论文 发布日期:2011-05-14 17:14 热度:


  (3)如果将程序中的FileOutputStream("c:\workbook.xls')参数改为名为"workbook.xls",则文件会创建在项目根目录。
  4.3往Excel单元格中写入信息
  POI把Excel分解成如图2所示的对象结构。四个对象的创建是互相依赖的,自顶向下的关系是:工作簿(HSSFWorkbook)—>表格(HSSFSheet)—>表格行(HSSFRow)—>单元格(HSSFCell)。
  
  
  图2POI的Excel对象结构
  在Excel创建了四个单元格,并将类型不同的值写入各单元格,代码如下(仅给出main方法)。
  //-----文件名:ExcelSample2.java-----
  publicstaticVoidmain(String[]args)throwsIOException{
  /*
  *在工作簿里上创建一个sheet,在sheet里创建一行,参数为行号(第二行)
  */
  HSSFWorkbookwb=newHSSFWorkbook();
  HSSFWorkbooksheet=wb.createSheet("newsheet");
  HSSFRowrow=sheet.createRow((short)1);
  /*
  *在row的这一行创建四个单元格,short型参数为列号;
  *第一个单元格第1列设为整数1,其他单元格使用简洁的一句式写法,分别设置为实数、字符串、布尔型
  */
  HSSFCellcell=row.createCell((shot)0);
  cell.setCellValue(1);
  row.createCell((short)1).setCellValue(1.2);
  row.createCell((short)2).setCellValue("HelloWorld");
  row.createCell((short)3).setCellValue(true);
  /*
  *写入文件
  */
  FileOutputStreamfileout=newFilwOutStream("c:workbook.xls");
  wb.write(fileOut);
  fileOut.close();
  }
  打开Excel文件,其效果如图3所示:
  
  图3实例的效果图
  注意;无论行列,在POI中都是以0为起始,即0表示第1行(列),3表示第4行(列)。
  中文化的问题:
  如果要将sheet命名为中文或将单元格写入中文值,则需要多使用一些语句,否则还像原来那样写,出来的会是乱码。
  (1)sheet命名为中文
  HSSFWorkbookwb=newHSSFWorkbook();
  HSSFSheetsheet=wb.createSheet();
  wb.setSheetName(0,"年终报表",HSSFWorkbook.ENCODING_UTF_16);
  其中setSheetName的第一个参数值0,是指对工作簿的第一个sheet命名。
  (2)单元格写入中文
  cell.setEncodig(HSSFCell.ENCODING_UTF_16);
  cell.setCellValue("利润");
  
  4.4合并单元格
  示例代码如下:
  //-----文件名:ExcelSample6.java-----
  HSSFWorkbookwb=newHSSFWorkbook();
  HSSFSheetsheet=wb.createSheet();
  HSSFRowrow=sheet.createRow((short)1);
  //将单元格从第2行第2列合并到第3行第5列
  HSSFCellcell=row.createCell((short)1);
  cell.setCellValue("HellloWorld");
  sheet.addMergedRegion(newRegion(newRegion(short)3,2(short)4));
  //写入文件
  FileOutStreamfileOut=newFileOutputStream("c:workbook.xls");
  wb.write(fileOut);
  fileOut.close();
  效果如图4
  
  图4合并单元格1
  说明:以上程序的关键在于Region(1,(short)3,2,(short)4),前两个参数是合并的左上角坐标,后两个参数是右下角坐标,即从第2行第2列合并到第3行第5列,如果将Region的第二个参数改为3,即Region(1,(short)3,2,(short)4),则它是从第2行第4列合并到第3行第5列,其效果如图5所示。
  
  图5合并单元格2
  4.5读取Excel文档中的数据
  示例2将演示如何读取Excel文档中的数据。假定在D盘JTest目录下有一个文件名为test1.xls的Excel文件。
  示例2程序如下:
  importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
  importorg.apache.poi.hssf.usermodel.HSSFSheet;
  importorg.apache.poi.hssf.usermodel.HSSFRow;
  importorg.apache.poi.hssf.usermodel.HSSFCell;
  importjava.io.FileInputStream;
  publicclassReadXL{
  /**Excel文件的存放位置。注意是正斜线*/
  publicstaticStringfileToBeRead="D:\test1.xls";
  publicstaticvoidmain(Stringargv[]){
  try{
  //创建对Excel工作簿文件的引用
  HSSFWorkbookworkbook=newHSSFWorkbook(newFileInputStream(fileToBeRead));
  //创建对工作表的引用。
  //本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
  HSSFSheetsheet=workbook.getSheet("Sheet1");
  //也可用getSheetAt(intindex)按索引引用,
  //在Excel文档中,第一张工作表的缺省索引是0,
  //其语句为:HSSFSheetsheet=workbook.getSheetAt(0);
  //读取左上端单元
  HSSFRowrow=sheet.getRow(0);
  HSSFCellcell=row.getCell((short)0);
  //输出单元内容,cell.getStringCellValue()就是取所在单元的值
  System.out.println("左上端单元是:"+cell.getStringCellValue());
  }catch(Exceptione){
  System.out.println("已运行xlRead():"+e);
  }
  }
  }
  4.6设置单元格格式
  在这里,我们将只介绍一些和格式设置有关的语句,我们假定workbook就是对一个工作簿的引用。在Java中,第一步要做的就是创建和设置字体和单元格的格式,然后再应用这些格式:

 2/3   首页 上一页 1 2 3 下一页 尾页

文章标题:Java技术中Excel报表的应用研究

转载请注明来自:http://www.sofabiao.com/fblw/dianxin/yingyong/8894.html

相关问题解答

SCI服务

搜论文知识网的海量职称论文范文仅供广大读者免费阅读使用! 冀ICP备15021333号-3