现在的位置: 首页 > 综合 > 正文

POI生成excel表格——简单例子

2012年02月22日 ⁄ 综合 ⁄ 共 3813字 ⁄ 字号 评论关闭

导入包 poi-2.5.1.jar

User类(提供数据用)

package com.xk.poi;

import java.util.ArrayList;
import java.util.List;

public class User
{
    private String firstname;
    private String lastname;
    private int age;

    public User()
    {
        
    }    
    
    public User(String firstname, String lastname, int age)
    {
        this.firstname = firstname;
        this.lastname = lastname;
        this.age = age;
    }
    
    public String getFirstname()
    {
        return firstname;
    }
    public void setFirstname(String firstname)
    {
        this.firstname = firstname;
    }
    public String getLastname()
    {
        return lastname;
    }
    public void setLastname(String lastname)
    {
        this.lastname = lastname;
    }
    public int getAge()
    {
        return age;
    }
    public void setAge(int age)
    {
        this.age = age;
    }
    
    public List<User> findAllUser()
    {
        User user1 = new User("张","无极",22);
        User user2 = new User("李","小龙",43);
        User user3 = new User("程","劲风",25);
        User user4 = new User("黄","容",34);
        
        List<User> list = new ArrayList<User>();
        
        list.add(user1);
        list.add(user2);
        list.add(user3);
        list.add(user4);
        return list;
    }
}



PoiTest类(生成Excel文件)


package com.xk.poi;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

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

public class PoiTest
{

    //将生成好的Excel文件,放到硬盘上

    public void writeToDisk()
    {

        HSSFWorkbook wb = new HSSFWorkbook();
        //生成一个sheet1
        HSSFSheet sheet = wb.createSheet("sheet1");
        //为sheet1生成第一行,用于放表头信息
        HSSFRow row = sheet.createRow(0);
        
        //第一行的第一个单元格的值为  ‘序号’
        HSSFCell cell = row.createCell((short)0);
        cell.setEncoding(HSSFCell.ENCODING_UTF_16); //设置编码
        cell.setCellValue("序号");
        
        cell = row.createCell((short)1);
        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellValue("姓");
        
        cell = row.createCell((short)2);
        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellValue("名");
        
        cell = row.createCell((short)3);
        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellValue("年龄");
        
        User u = new User();
        
        List<User> list = u.findAllUser();
        //获得List中的数据,并将数据放到Excel中

        for(int i=0;i<list.size();i++)
        {
            User user = list.get(i);

           //数据每增加一行,表格就再生成一行             

            row = sheet.createRow(i+1);
            //第一个单元格,放序号随着i的增加而增加           

            cell = row.createCell((short)0);
            cell.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell.setCellValue(i+1);
            //第二个单元格放firstname
            cell = row.createCell((short)1);
            cell.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell.setCellValue(user.getFirstname());
            //第三个单元格放lastname
            cell = row.createCell((short)2);
            cell.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell.setCellValue(user.getLastname());
            //第四个单元格放age
            cell = row.createCell((short)3);
            cell.setEncoding(HSSFCell.ENCODING_UTF_16);
            cell.setCellValue(user.getAge());
            
        }
        
        
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        try
        {
            wb.write(os);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        
        byte[] content = os.toByteArray();
        
        File file = new File("c:/text.xls");//Excel文件生成后存储的位置。
        
        OutputStream fos  = null;
        
        try
        {
            fos = new FileOutputStream(file);
            
            fos.write(content);

            os.close();

            fos.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }          
    }    
    
    public static void main(String[] args)
    {
        
        PoiTest pt = new PoiTest();
        pt.writeToDisk();
        
    }
}


运行结果:

C盘下生成了一个test.xls文件

里面的内容为:



抱歉!评论已关闭.