• 1. 如何利用JAVA生成Excel文件Java学习小组:吴楠楠
  • 2. 使用Jakarta的POI项目操作Excel文件 Jakarta的POI项目提供了一组操纵Windows文档的Java API,如下几个类提供了操作Excel文件的方便的途径:HSSFWorkbook、HSSFSheet、HSSFRow、HSSFCell,分别代表了Excel电子表格中的Book、Sheet、行和单元格
  • 3. POI对象名称所对应的Excel对象 HSSFWorkbook 工作簿 HSSFSheet 工作表 HSSFRow 行 HSSFCell 单元格
  • 4. 创建一个workbook 创建workbook HSSFWorkbook wb = new HSSFWorkbook();
  • 5. 创建一个sheet HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet1 = wb.createSheet(“new sheet”); new sheet :所创建的sheet页的名字
  • 6. 创建行 HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet(“new sheet”); //注意以下的代码很多方法的参数是short 而不是int 所以需要做一次类型转换 //sheet 创建一行 HSSFRow row = sheet.createRow((short)0);
  • 7. 创建cells(单元格) HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("new sheet"); HSSFRow row = sheet.createRow((short)0); //行创建一个单元格 HSSFCell cell = row.createCell((short)0);
  • 8. 设定单元格的值 cell.setCellValue("Hello! Thiswnn test"); 值的类型参数有多中double ,String ,boolean, row.createCell((short)1).setCellValue(1.2); row.createCell((short)2).setCellValue(“Cell"); row.createCell((short)3).setCellValue(true);
  • 9. 一个生成Excel的实例 public class creatFile { static public void main(String[] args) throws Exception { FileOutputStream fos = new FileOutputStream("d:\\creatFile.xls"); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = wb.createSheet(); wb.setSheetName(0, "first sheet"); HSSFRow row = s.createRow(0); HSSFCell cell = row.createCell((short)0); cell.setCellValue("Hello! This message is generated from POI."); wb.write(fos); fos.close(); } }
  • 10. java流 I/O流概述 Java.io包中定义了多个流类型来实现输入/输出功能 处理字节流的两个基础的类是InputStream和/OutputStream(处理8位字节流) 处理字符流的两个基础的类是Reader和Writer(处理16为字节流) 所有其他的流都是一这四个类为基础
  • 11. 流的分类 按照流的走向分为输入流和输出流 输入流: InputStream(处理字节流) Reader(处理字符流) 所有由InputStream或Reader派生出来的类都有一个基本的read()方法,用于读取单一的字节或字节数组。 输出流: OutputStream(处理字节流) Writer(处理字符流) 所有由OutputStream或Writer派生出来的类都有一个基本的write()方法,用于写入单一的字节或字节数组。
  • 12. 按照六所处理的“源”的不同,可以分“节点流”和“处理流” 1、节点流(低级流) 面向特定的IO设备(如磁盘或网络)读 /写数据的流 2、处理流(高级流) 处理流的流,实现对一个已经存在的流 的连接和封装,通过所封装的流的功能调用实现数据读/写的功能
  • 13. InputStream/ OutputStream(处理字节数据) 输入流 InputStream(低级流)FileInputStream InputStream (低级流) FilterInputStream DataInputStream(高级流) 输出流 OutputStream (低级流) FileOutputStream OutputStream (低级流) FilterOutputStream DataOutputStream (高级流) 读/写流的方式都是以字节为单位进行的
  • 14. Reader/Writer(处理字符类型的数据的流) 用于读取一个字符文件的类 Reader(基类)InputStreamReader (高级流) FileReader (高级流) Writer(基类) OutputStreamReader (高级流) FileReader (高级流) 用于读取数据源是一个字符串的流 Reader(基类)StringReader (低级流) Writer(基类) StringWriter (低级流)
  • 15. 使用完流以后必须执行的方法 void close() 用于关闭这个流在使用完流以后,一定要记得使用该方法将流关闭,释放流所占用的资源。
  • 16. 流的连接的基本原则是: 高级流域低级流打交道,低级流与I/O设备、文件打交道,高级流与低级流可以互相交流。 通过流的连接,可以降低层对设备的流的操作向程序员隐藏,而程序员只需要关心上层流的操作。
  • 17. public class AppendFile { public static void main(String[] args) throws FileNotFoundException, IOException { POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream("d:\\test.xls")); // 创建一个新的Excel HSSFWorkbook wb = new HSSFWorkbook(fs); // 在所创建的Excel中新建一个sheet页 HSSFSheet sheet = wb.getSheetAt(0); // 取该sheet页的第13行 HSSFRow row = sheet.getRow(12); // 第8列的单元格 HSSFCell cell = row.getCell((short)7); System.out.println(cell); String src = "单元格"; // 在所取得单元格中书写内容 cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(src); // Write the output to a file FileOutputStream fileOut = new FileOutputStream("d:\\ww.xls"); wb.write(fileOut); fileOut.close(); } }
  • 18. (本页无文本内容)