jxl

阅读更多
Java生成和操作Excel文件


package demo.dcn.vo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.format.CellFormat;
import jxl.format.Colour;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
public class Excel {
	/**
	 * @param args
	 * Excel读写程序
	 * @throws IOException 
	 * @throws BiffException 
	 */
	public static void main(String[] args) throws BiffException, IOException {
		writeExcel();
		readExcel();
	}
	public static void readExcel() throws BiffException, IOException{
		List list = new ArrayList();
		Workbook rwb =null;
		Cell cell = null;
		InputStream stream = new FileInputStream("E:\\xml\\x.xls");//创建一个输出流
		rwb = Workbook.getWorkbook(stream); //获取Excel文件对象
		Sheet sheet = rwb.getSheet(0);//获取文件的指定工作表 默认的第一个
		for(int i=0;i columns, List> objData) {
        // 创建可以写入的Excel工作薄(默认运行生成的文件在tomcat/bin下 )
        WritableWorkbook wwb=null;
        try {
            wwb=Workbook.createWorkbook(os);
            WritableSheet sheet=wwb.createSheet("First Sheet", 0);
            // 开始写入第一行(即标题栏)
            for(int i=0; i < columns.size(); i++) {
                // 用于写入文本内容到工作表中去
                Label label=null;
                // 在Label对象的构造中指明单元格位置(参数依次代表列数、行数、内容 )
                label=new Label(i, 0, columns.get(i));
                // 将定义好的单元格添加到工作表中
                sheet.addCell(label);
            }
            // 循环写入表中数据
            if(objData.isEmpty()) {
                return false;
            } else {
                for(int i=0; i < objData.size(); i++) {
                    // 转换成map集合{activyName:测试功能,count:2}
                    Map map=(Map)objData.get(i);
                    // 循环输出map中的子集:既列值
                    for(int j=0;j entry : map.entrySet()) {
                            // ps:因为要“”通用”“导出功能,所以这里循环的时候不是get("Name"),而是通过map.get(o)
                            if(entry.getKey()==columns.get(j)){
                                sheet.addCell(new Label(j, i + 1, String.valueOf(entry.getValue())));
                            }
                        }
                    }
                    
                }
            }
            // 写入数据
            wwb.write();
            // 关闭文件
            wwb.close();
            // 关闭输出流
            os.close();
        } catch(Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

/**
     * 向客户端下载文件,弹出下载框.
     * @param response(HttpServletResponse)
     * @param file(需要下载的文件)
     * @param isDel(下载完成后是否删除该文件)
     * @throws IOException
     */
    public static void exportFile(HttpServletResponse response, File file, boolean isDel)  {
        OutputStream out=null;
        InputStream in=null;
        try {
            // 获得文件名
            String filename=URLEncoder.encode(file.getName(), "UTF-8");
            // 定义输出类型(下载)
            response.setContentType("application/force-download");
            response.setHeader("Location", filename);
            // 定义输出文件头
            response.setHeader("Content-Disposition", "attachment;filename=" + filename);
            out=response.getOutputStream();
            in=new FileInputStream(file.getPath());

            byte[] buffer=new byte[1024];
            int i=-1;
            while((i=in.read(buffer)) != -1) {
                out.write(buffer, 0, i);
            }
            in.close();
            out.close();
        } catch(Exception e) {
            e.printStackTrace();
        }
        if(isDel) {
            // 删除文件,删除前关闭所有的Stream.
            file.delete();
        }
    }

    /**
     * 创建文件名和临时文件
     * @throws IOException
     */
    public static File createFile(String name) {
        // 创建当前日子
        Date date=new Date();
        // 格式化日期
        SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
        // 格式化日期(产生文件名)
        String filename=sdf.format(date);
        // 创建文件
        File f=new File(name + filename + ".xls");
        try {
            f.createNewFile();
        } catch(IOException e) {
            e.printStackTrace();
        }
        return f;
    }




你可能感兴趣的:(jxl)