【JAVA】使用Aphache poi操作EXCEL 笔记

Posted on 2013-08-21 08:49  诸葛小北  阅读(559)  评论(0编辑  收藏  举报

1 下载poi,地址

http://poi.apache.org/ 

选择3.9版本。

2

刚开始尝试 把poi.jar放在D:\Program Files\java\jdk1.6.0_20\lib(不管用。删除)

若你的是web Project工程,就直接把poi.jar包复制粘贴到webroot的web-inf下面的lib文件夹里面;
若你的是java Project工程,就打开盖工程的属性(Properties)找到他的java build path然后有个Libraries选项卡在右侧可通过Add jars来添加放置在工程里面的poi.jar包,如果你的这个poi.jar包不是放在工程中的,可以通过add external jars来添加外部jar包

3 创建1个EXCEL文件。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;


import org.apache.poi.hssf.usermodel.HSSFWorkbook;


public class PoiMain {

    /**
     * @param args
     */
    public static void main(String[] args) {
        try {
            // 创建一个Excel文件
            HSSFWorkbook wb = new HSSFWorkbook();
            String path = "D:\\Workspace\\TestPOI\\a.xls";
            FileOutputStream fileOut = new FileOutputStream(new File(path));
            wb.write(fileOut);
            fileOut.close();
        } catch (Exception e) {
            // TODO: handle exception
        }

    }

}
View Code

包结构

 

 4 创建一个Excle,并写入各种格式的内容

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import org.apache.poi.hssf.usermodel.*;//Excel所有


public class PoiMain {

    /**
     * @param args
     * 创建一个xls文件
     * 用到org.apache.poi.hssf.usermodel.HSSFWorkbook;//Excel的文档对象
     * 主程序,唯一程序,排他
     * @作者 小白
     */
//    public static void main(String[] args) {
//        try {
//            // 创建一个Excel文件
//            HSSFWorkbook wb = new HSSFWorkbook();
//            String path = "D:\\Workspace\\TestPOI\\a.xls";
//            FileOutputStream fileOut = new FileOutputStream(new File(path));
//            wb.write(fileOut);
//            fileOut.close();
//        } catch (Exception e) {
//            // TODO: handle exception
//        }
//
//    }
    
    
    
    
    /**
     * @param args
     * 创建一个xls文件
     * 用到org.apache.poi.hssf.usermodel.*;//Excel所有
     * 主程序,唯一程序,排他
     */
    public static void main(String[] args) throws IOException{
        try {
            HSSFWorkbook wb = new HSSFWorkbook();    //建立新HSSFWorkbook对象
            HSSFSheet sheet = wb.createSheet("new sheet");  //建立新的sheet对象
            
            //第0行
            HSSFRow row = sheet.createRow((short)0);
            //在sheet里创建一行,参数为行号(第一行,此处可想象成数组)
            HSSFCell cell = row.createCell(0);                
            //在row里建立新cell(单元格),参数为列号(第一列)
            cell.setCellValue(1)   ;//设置cell的整数类型的值            
            row.createCell(1).setCellValue(1.2);     //设置cell浮点类型的值
            row.createCell(2).setCellValue("haha");   //设置cell字符类型的值
            row.createCell(3).setCellValue(true);    //设置cell布尔类型的值 
            
            HSSFCellStyle cellStyle = wb.createCellStyle(); //建立新的cell样式
            HSSFDataFormat format= wb.createDataFormat();        
            cellStyle.setDataFormat(format.getFormat("yyyy年mm月d日 hh:mm:ss"));//这两行是日期格式的重点            
            //设置cell样式为定制的日期格式
            HSSFCell dCell =row.createCell(4);
            dCell.setCellValue(new Date());            //设置cell为日期类型的值
            dCell.setCellStyle(cellStyle);              //设置该cell日期的显示格式
            
        
            
            
            HSSFCell csCell =row.createCell(5);
//            csCell.setEncoding(HSSFCell.ENCODING_UTF_16);
            
            //设置cell编码解决中文高位字节截断
            csCell.setCellValue("这是中文的测试"); //设置中西文结合字符串
            
            row.createCell(6).setCellType(HSSFCell.CELL_TYPE_ERROR);
            //建立错误cell
            
            //第1行
            HSSFRow row1 = sheet.createRow(1);
            row1.createCell(0).setCellValue(false);    
            row1.createCell(1).setCellValue(19907);
            row1.createCell(2).setCellValue("中华民国");
            
            
            //创建生成文件
            String path = "D:\\Workspace\\TestPOI\\ab.xls";
            FileOutputStream fileOut = new FileOutputStream(new File(path));            
            wb.write(fileOut);
            fileOut.close();

        } catch (Exception e) {
            // TODO: handle exception
            
        }

    }

}
View Code

 

包结构

表内容

 5 把刚才创建的东东读出来

为了方便主函数操作,把读写类和测试类分开了

包结构:

主类 PoiMain.java

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import org.apache.poi.hssf.usermodel.*;//Excel所有


public class PoiMain {

    /**
     * @param args
     * 创建一个xls文件
     * 用到org.apache.poi.hssf.usermodel.HSSFWorkbook;//Excel的文档对象
     * 主程序,唯一程序,排他
     * @作者 小白
     */
//    public static void main(String[] args) {
//        try {
//            // 创建一个Excel文件
//            HSSFWorkbook wb = new HSSFWorkbook();
//            String path = "D:\\Workspace\\TestPOI\\a.xls";
//            FileOutputStream fileOut = new FileOutputStream(new File(path));
//            wb.write(fileOut);
//            fileOut.close();
//        } catch (Exception e) {
//            // TODO: handle exception
//        }
//
//    }
    
    
    
    
    /**
     * @param args
     * 创建一个xls文件
     * 用到org.apache.poi.hssf.usermodel.*;//Excel所有
     * 主程序,唯一程序,排他
     */
    public static void main(String[] args) throws IOException{
        
        //创建Excel
//        CreatExcelTest cTest = new CreatExcelTest();
//        cTest.creatExcel();
        
        //读取Excel
        GetVlueTest gTest = new GetVlueTest();
        gTest.getvalue();
        
//        TestPrint testPrint = new TestPrint();
//        testPrint.TestPrint();

    }

}
View Code

创建Excel的类 CreatExcelTest.java

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class CreatExcelTest {

    public static void creatExcel(){
        try {
            HSSFWorkbook wb = new HSSFWorkbook();    //建立新HSSFWorkbook对象
            HSSFSheet sheet = wb.createSheet("new sheet");  //建立新的sheet对象
            
            //第0行
            HSSFRow row = sheet.createRow((short)0);
            //在sheet里创建一行,参数为行号(第一行,此处可想象成数组)
            HSSFCell cell = row.createCell(0);                
            //在row里建立新cell(单元格),参数为列号(第一列)
            cell.setCellValue(1)   ;//设置cell的整数类型的值            
            row.createCell(1).setCellValue(1.2);     //设置cell浮点类型的值
            row.createCell(2).setCellValue("haha");   //设置cell字符类型的值
            row.createCell(3).setCellValue(true);    //设置cell布尔类型的值 
            
            HSSFCellStyle cellStyle = wb.createCellStyle(); //建立新的cell样式
            HSSFDataFormat format= wb.createDataFormat();        
            cellStyle.setDataFormat(format.getFormat("yyyy年mm月d日 hh:mm:ss"));//这两行是日期格式的重点            
            //设置cell样式为定制的日期格式
            HSSFCell dCell =row.createCell(4);
            dCell.setCellValue(new Date());            //设置cell为日期类型的值
            dCell.setCellStyle(cellStyle);              //设置该cell日期的显示格式
            
        
            
            
            HSSFCell csCell =row.createCell(5);
//            csCell.setEncoding(HSSFCell.ENCODING_UTF_16);
            
            //设置cell编码解决中文高位字节截断
            csCell.setCellValue("这是中文的测试"); //设置中西文结合字符串
            
            row.createCell(6).setCellType(HSSFCell.CELL_TYPE_ERROR);
            //建立错误cell
            
            //第1行
            HSSFRow row1 = sheet.createRow(1);
            row1.createCell(0).setCellValue(false);    
            row1.createCell(1).setCellValue(19907);
            row1.createCell(2).setCellValue("中华民国a ");
            
            
            //创建生成文件
            String path = "D:\\Workspace\\TestPOI\\abcd.xls";
            FileOutputStream fileOut = new FileOutputStream(new File(path));            
            wb.write(fileOut);
            fileOut.close();

        } catch (Exception e) {
            // TODO: handle exception
            
        }
    }

}
View Code

读取Excel的类,读取出来的内容打印在控制台了。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.tools.JavaFileObject.Kind;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class GetVlueTest {
    
public static void getvalue(){
    
    try {
        
        
        String filePath = "D:\\Workspace\\TestPOI\\b.xls";
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook(new FileInputStream(filePath));
        HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(0);
        int i = hssfSheet.getLastRowNum();//最后一行行标,比行数小1
    
        for(int k=0; k<=i;k++){
        
            
            
            int m = hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1
            
            for(int j=0; j<m;j++)
                {
                   hssfSheet.getRow(k).getCell(j).setCellType(HSSFCell.CELL_TYPE_STRING);//为了打印输出,强制把不是字符串的东东转换成字符串
                   System.out.println(hssfSheet.getRow(k).getCell(j).getStringCellValue());            
                }
            
        }
            
            
    

    } catch (Exception e) {
        // TODO: handle exception
        
    }
    
    
}

}
View Code

 

 

 

 

 

 


Copyright © 2024 诸葛小北
Powered by .NET 8.0 on Kubernetes