jExcel

Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该APIWindows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSPServlet来调用API实现对Excel数据表的访问。

先倒入jxl.jar文件

以下是一个静态的测试类

package test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;

import jxl.Cell;
import jxl.CellType;
import jxl.LabelCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.UnderlineStyle;
import jxl.write.Boolean;
import jxl.write.DateFormat;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.NumberFormat;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class excelHandle {
 /**
  * 读取Excel
  * @param filePath
  */
 public static void readExcel(String filePath){
  try {
   InputStream is = new FileInputStream(filePath);
   Workbook rwb = Workbook.getWorkbook(is);
   Sheet st = rwb.getSheet(0);
   Cell c00 = st.getCell(0, 0);
   Cell c01 = st.getCell(0, 1);
   Cell c10 = st.getCell(1, 0);
   //通用的获取cell值的方法,返回字符串
   String strc00 = c00.getContents();
   String strc01 = c01.getContents();
   String strc10 = c10.getContents();
   //获取cell具体类型值的方法
   if(c00.getType() == CellType.LABEL){
    LabelCell labelc00 = (LabelCell)c00;
    strc00 = labelc00.getString();
   }
   //输出
   System.out.println(strc00);
   System.out.println(strc01);
   System.out.println(strc10);
   //关闭
   rwb.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
  
 }
 
 /**
  * 输出Excel
  * @param os
  */
 public static void writeExcel(OutputStream os){
  try {
   WritableWorkbook wwb = Workbook.createWorkbook(os);
   //创建Excel工作表,指定名称和位置
   WritableSheet ws = wwb.createSheet("test sheet 1", 0);
   //往工作表中添加数据
   
   //添加label对象
   Label label = new Label(0,0,"this is  a label test");
   ws.addCell(label);
   
   //添加带有字型Formatting对象
   WritableFont wf = new WritableFont(WritableFont.TIMES,18,WritableFont.BOLD,true);
   WritableCellFormat wcf = new WritableCellFormat(wf);
   Label labelcf = new Label(1,0,"this is l label test",wcf);
   ws.addCell(labelcf);
   
   //添加带有字体颜色的Formatting对象
    WritableFont wfc = new WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD,false,
                     UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
             WritableCellFormat wcfFC = new WritableCellFormat(wfc);
             Label labelCF = new Label(1,0,"This is a Label Cell",wcfFC);
             ws.addCell(labelCF);
            
            
           //2.添加Number对象
             Number labelN = new Number(0, 1, 3.1415926);
             ws.addCell(labelN);
            
           //添加带有formatting的Number对象
             NumberFormat nf = new NumberFormat("#.##");
             WritableCellFormat wcfN = new WritableCellFormat(nf);
             Number labelNF = new jxl.write.Number(1,1,3.1415926,wcfN);
             ws.addCell(labelNF);
            
             //3.添加Boolean对象
             Boolean labelB = new Boolean(0,2,false);
             ws.addCell(labelB);
            
             //4.添加DateTime对象
             DateTime labelDT = new DateTime(0,3,new Date());
            
             //添加带有formatting的DateFormat对象
             DateFormat df = new DateFormat("dd MM yyyy hh:mm:ss");
             WritableCellFormat wcfDF = new WritableCellFormat(df);
             DateTime labelDTF = new DateTime(1,3,new java.util.Date(),wcfDF);
             ws.addCell(labelDTF);
            
             //写入工作表
             wwb.write();
             wwb.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

/**
      *
拷贝后,进行修改,其中file1为被copy对象,file2为修改后创建的对象
      *
尽单元格原有的格式化修饰是不能去掉的,我们还是可以将新的单元格修饰加上去,
      *
以使单元格的内容以不同的形式表现
      * @param file1
      * @param file2
      */
     public static void modifyExcel(File file1,File file2)
     {
         try
         {
             Workbook rwb = Workbook.getWorkbook(file1);
             WritableWorkbook wwb = Workbook.createWorkbook(file2,rwb);//copy
             WritableSheet ws = wwb.getSheet(0);
             WritableCell wc = ws.getWritableCell(0,0);
             //
判断单元格的类型,做出相应的转换
             if(wc.getType == CellType.LABEL)
             {
                 Label label = (Label)wc;
                 label.setString("The value has been modified");
             }
             wwb.write();
             wwb.close();
             rwb.close();
         }
         catch(Exception e)
         {
             e.printStackTrace();
         }
     }


 
 //测试
 public static void main(String[] args) {
  //读Excel
  //excelHandle.readExcel("f:/1.xls");
  
  //输出Excel
  
  try {
   File fileWrite = new File("f:/exl1.xls");
   fileWrite.createNewFile();
   OutputStream os = new FileOutputStream(fileWrite);
   excelHandle.writeExcel(os);
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

猜你喜欢

转载自bao1073740756-126-com.iteye.com/blog/1553395