java利用POI实现Excel导入导出详解-支持97-2013版本以及2017版本

package com.kero99.ygc.excel;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
//Excel 导出 HSSF -->支持97-2013版本 默认版本
//需要的jar包 
 /**
        * commons-io-2.2.jar
        * dom4j-1.6.1.jar
        * jxl.jar
        * poi-3.11-20141221.jar
        * poi-examples-3.11-20141221.jar
        * poi-excelant-3.11-20141221.jar
        * poi-ooxml-3.11-20141221.jar
        * poi-ooxml-schemas-3.11-20141221.jar
        * poi-scratchpad-3.11-20141221.jar
        * xmlbeans-2.6.0.jar
        */

public class PoiExpExcel {
    public static void main(String[] args) {
    //表头标题
    String[] title={"id","name","sex"};
    //创建Excel工作簿
    HSSFWorkbook workbook=new HSSFWorkbook();
    //创建一个工作表sheet  默认是表名是sheet0
    HSSFSheet sheet=workbook.createSheet("ygc开发表");
    //设置默认行高
    sheet.setDefaultRowHeight((short)(3 * 256));    
    //创建字体设置字体为宋体
    HSSFFont font = workbook.createFont();
    font.setFontName("宋体");
    //font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    //设置字体高度
    font.setFontHeightInPoints((short) 20);

    HSSFCellStyle style = workbook.createCellStyle();
    //style.setFont(font);
    //设置自动换行
    style.setWrapText(true);

    //设置对齐方式为居中对齐
    style.setAlignment(XSSFCellStyle.ALIGN_CENTER);
    //设置单元格内容垂直对其方式为居中
    style.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);
    //创建表的第一行
    HSSFRow row=sheet.createRow(0);
    //创建单元格
    HSSFCell cell=null;
    //循环为第一行三个单元格插入三个标题
    for(int i=0;i
        cell=row.createCell(i);
        cell.setCellStyle(style);
        cell.setCellValue(title[i]);
    }
    //追加数据 1是第二行
    for(int i=1;i<=10;i++){
        HSSFRow nextrow=sheet.createRow(i);

        HSSFCell cell2=nextrow.createCell(0);
        cell2.setCellStyle(style);
        cell2.setCellValue("a"+i);

        cell2=nextrow.createCell(1);
        cell2.setCellValue("user"+i);
        cell2.setCellStyle(style);

        cell2=nextrow.createCell(2);
        cell2.setCellValue("男");
        cell2.setCellStyle(style);
    }
    //创建一个文件
    File file=new File("e:/测试文件.xls");
    try {
        file.createNewFile();
        //将Excel存盘
        FileOutputStream stream=new FileOutputStream(file);
        workbook.write(stream);
        stream.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

    }
}

//Excel导入HSSF

package com.kero99.ygc.excel;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
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 PoiReadExcel {
    public static void main(String[] args) {

        File file = new File("e:/测试文件.xls");
        //创建Excel,读取文件内容
    try {
        HSSFWorkbook workbook = 
        new HSSFWorkbook(FileUtils.openInputStream(file));
        //创建Excel,读取文件内容
//      HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(new File("e:/测试文件.xls")));
        //获取第一个工作表workbook.getSheet("ygc开发表");
//      HSSFSheet sheet=workbook.getSheet("ygc开发表");
        //第二种获取方式通过index 获取第一个表
        HSSFSheet sheet = workbook.getSheetAt(0);

        int firstRowNum=0;
        //获取表中最后一行
        int lastRowNum = sheet.getLastRowNum();
        for(int i=firstRowNum;i<=lastRowNum;i++){
            HSSFRow row = sheet.getRow(i);
            //获取当前最后单元格列号
            int lastCellNum = row.getLastCellNum();
            for(int j=0;j
                HSSFCell cell = row.getCell(j);
                String value = cell.getStringCellValue();
                System.out.print(value + "  ");//注意value后面的空格
            }
            System.out.println();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

    }
}

//XSSF 导入 支持 2017版本

package com.kero99.ygc.excel;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class JxlExpExcel {
    /**
     * XSSF兼容高版本Excel文件 eg:2017版本  
     * 默认一般创建 HSSF 1997-2013版本   
     * @param args
     */
    public static void main(String[] args) {
    //表头标题
    String[] title={"id","name","sex"};
    //创建Excel工作簿
    XSSFWorkbook workbook=new XSSFWorkbook();
    //创建一个工作表sheet  默认是表名是sheet0
    Sheet sheet=workbook.createSheet("ygc开发表");
    //创建表的第一行
    Row row=sheet.createRow(0);
    //创建单元格
    Cell cell=null;
    //循环为第一行三个单元格插入三个标题
    for(int i=0;i//追加数据 1是第二行
    for(int i=1;i<=10;i++){
        Row nextrow=sheet.createRow(i);

        Cell cell2=nextrow.createCell(0);
        cell2.setCellValue("a"+i);

        cell2=nextrow.createCell(1);
        cell2.setCellValue("user"+i);

        cell2=nextrow.createCell(2);
        cell2.setCellValue("男");
    }
    //创建一个文件
    File file=new File("e:/测试文件.xlsx");
    try {
        file.createNewFile();
        //将Excel存盘
        FileOutputStream stream=new FileOutputStream(file);
        workbook.write(stream);
        stream.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

    }
}

/XFFS导入

package com.kero99.ygc.excel;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class JxlReadExcel {
    public static void main(String[] args) {

        File file = new File("e:/测试文件.xlsx");
        //创建Excel,读取文件内容
    try {
        XSSFWorkbook workbook = 
        new XSSFWorkbook(FileUtils.openInputStream(file));
        //创建Excel,读取文件内容
//      Workbook workbook=new Workbook(new FileInputStream(new File("e:/测试文件.xls")));
        //获取第一个工作表workbook.getSheet("ygc开发表");
//      Sheet sheet=workbook.getSheet("ygc开发表");
        //第二种获取方式通过index 获取第一个表
        Sheet sheet = workbook.getSheetAt(0);
        int firstRowNum=0;
        //获取表中最后一行
        int lastRowNum = sheet.getLastRowNum();
        for(int i=firstRowNum;i<=lastRowNum;i++){
            Row row = sheet.getRow(i);
            //获取当前最后单元格列号
            int lastCellNum = row.getLastCellNum();
            for(int j=0;j
                Cell cell = row.getCell(j);
                String value = cell.getStringCellValue();
                System.out.print(value + "  ");//注意value后面的空格
            }
            System.out.println();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

    }
}

web

//利用下载导出 可以根据业务需求进行改进 
//头部
        HSSFWorkbook wb = new HSSFWorkbook();   
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/x-download");
        String fileName = "测试文件.xls";
        fileName = URLEncoder.encode(fileName, "UTF-8");
        response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
//--------------------------HSSF表格制作
//导出
OutputStream out = response.getOutputStream();
            wb.write(out);
            out.close();

你可能感兴趣的:(Java,程序式界)