使用Poi对EXCLE的导入导出

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
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;
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.ss.util.CellRangeAddress;
import org.junit.Test;

public class POIDemo1 {
    // 导入
    // @Test
    public void test2() throws Exception {
        // 创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        // 建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("成绩表");

        sheet.setDefaultRowHeightInPoints(10);// 设置缺省列高
        sheet.setDefaultColumnWidth(20);// 设置缺省列宽

        // 在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1 = sheet.createRow(0);
        // 创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
        HSSFCell cell = row1.createCell(0);
        // 设置单元格内容
        cell.setCellValue("学员考试成绩一览表");
        // 合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));
        // 在sheet里创建第二行
        HSSFRow row2 = sheet.createRow(1);
        // 创建单元格并设置单元格内容
        row2.createCell(0).setCellValue("姓名");
        row2.createCell(1).setCellValue("班级");
        row2.createCell(2).setCellValue("笔试成绩");
        row2.createCell(3).setCellValue("机试成绩");
        // 在sheet里创建第三行
        HSSFRow row3 = sheet.createRow(2);
        row3.createCell(0).setCellValue("李明");
        row3.createCell(1).setCellValue("As178");
        row3.createCell(2).setCellValue(87);
        row3.createCell(3).setCellValue(78);
        // .....省略部分代码

        // 输出Excel文件
        // 输出Excel文件
        FileOutputStream output = new FileOutputStream("d:\\workbook.xls");
        // OutputStream output=response.getOutputStream();
        // response.reset();
        // response.setHeader("Content-disposition",
        // "attachment; filename=details.xls");
        // response.setContentType("application/msexcel");
        wb.write(output);
        output.flush();
        output.close();
    }

    // 导出
    @Test
    public void loadScoreInfo() throws IOException {
        List temp = new ArrayList();

        FileInputStream fileIn = new FileInputStream("d:\\workbook.xls");
        // 根据指定的文件输入流导入Excel从而产生Workbook对象
        HSSFWorkbook wb0 = new HSSFWorkbook(fileIn);
        // 获取Excel文档中的第一个表单
        Sheet sht0 = wb0.getSheetAt(0);
        // 对Sheet中的每一行进行迭代
        for (Row r : sht0) {
            // 如果当前行的行号(从0开始)未达到2(第三行)则从新循环
            if (r.getRowNum() < 2) {
                continue;
            }
            // String result1 = getResult(r.getCell(0));
            // String result2 = getResult(r.getCell(1));
            // String result3 = getResult(r.getCell(2));
            // String result4 = getResult(r.getCell(3));
            // System.out.println("="+result1);
            // System.out.println("="+result2);
            // System.out.println("="+result3);
            // System.out.println("="+result4);

            // 创建实体类
            ScoreInfo info = new ScoreInfo();
            // 取出当前行第1个单元格数据,并封装在info实体stuName属性上
            info.setStuName(r.getCell(0).getStringCellValue());
            info.setClassName(r.getCell(1).getStringCellValue());
            info.setWrittenScores(r.getCell(2).getNumericCellValue());
            info.setMachineScores(r.getCell(3).getNumericCellValue());
            temp.add(info);
        }
        System.out.println(temp);
        fileIn.close();
    }

    public static String getResult(Cell cell) {
        if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) {
            return String.valueOf(cell.getBooleanCellValue());
        } else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
            return String.valueOf(cell.getNumericCellValue());
        } else if (cell.getCellType() == cell.CELL_TYPE_STRING) {
            return String.valueOf(cell.getStringCellValue());
        } else {
            return String.valueOf(cell.getStringCellValue());
        }
    }

}
时间: 2024-08-29 01:07:03

使用Poi对EXCLE的导入导出的相关文章

一个基于POI的通用excel导入导出工具类的简单实现及使用方法

前言: 最近PM来了一个需求,简单来说就是在录入数据时一条一条插入到系统显得非常麻烦,让我实现一个直接通过excel导入的方法一次性录入所有数据.网上关于excel导入导出的例子很多,但大多相互借鉴.经过思考,认为一百个客户在录入excel的时候,就会有一百个格式版本,所以在实现这个功能之前,所以要统一excel的格式.于是提供了一个通用excel模版的下载功能.当所有客户用模版录入好数据再上传到系统,后端对excel进行解析,然后再持久化到数据库. 概述: 此工具类的几大特点 1.基本导入导出

poi实现excel的导入导出

import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.

使用JXL对EXCLE的导入导出

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Date; import jxl.CellType; import jxl.DateCell; import jxl.NumberCell; import jxl.Sheet; import jxl.Workbook; import jxl.format.Alignment; import jxl.fo

基于SSM的POI导入导出Excel实战第一篇-SSM框架的整合

业务背景:在JavaWeb应用开发中,经常需要将应用系统中某些业务数据导出到Excel中,又或者需要将这些业务数据先收集到Excel然后一键导入到系统 业务需求:如何用Java实现导入导出Excel 需求分析:目前流行的Java导入导出Excel的框架有POI跟JXL,这两者的优缺点在这里我就不作比较了,感兴趣的童鞋可以自行搜索了解一下; 技术选型:从本文开始,我将分享一下如何基于SSM框架+POI实现Java应用导入导出Excel,数据库采用mysql5.6,应用服务器采用tomcat7 工具

POI实现大数据EXCLE导入导出,解决内存溢出问题

使用POI能够导出大数据保证内存不溢出的一个重要原因是SXSSFWorkbook生成的EXCEL为2007版本,修改EXCEL2007文件后缀为ZIP打开可以看到,每一个Sheet都是一个xml文件,单元格格式和单元格坐标均用标签表示.直接使用SXSSFWorkbook来到导出EXCEL本身就是POI为了大数据量导出而量身定制的,所以导出可以直接使用SXSSFWorkbook方式. 为了保险起见可以采用多Sheet的方式保证内存不溢出.需要注意的是Sheet名称不能重复:下载的时候需要定义好返回

Java +EasyUI+SpringMvc实现Excle导入导出(下)

前言 接上篇,在上篇文章我们介绍了要实现Excle导入做的一些配置和Excel导入的前端EasyUI代码的书写和后台controller的具体书写,这篇我们我们主要来学习Excle导出的实现和ExcelUtil类的编写. 正题 Excel导出就是根据前台条件将参数传到controller,根据参数去数据库中进行查询,查询出list集合,调用ExcelUtil工具类,将list集合转为成excle数据,输出到浏览器. 导出实现 首先我们先来看下前台代码,前台获取参数,将参数传到对于的control

org.apache.poi3.1.7 Excle并发批量导入导出

org.apache.poi3.1.7 升级,需要修改设置方式: 1.org.apache.poi3.1.4 的设置单元格: XSSFCellStyle cellStyle = wb.createCellStyle();   cellStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER); // 居中  cellStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);//垂直 org.apache.

Java利用POI导入导出Excel中的数据

     首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地址http://poi.apache.org/download.html,有兴趣的朋友也可以去看看其中的API.      下面分享一下在对POI进行基本操作时觉得需要注意的两点:       1.POI中针对xlsx/xls是需要create different Workbook instance

POI导入导出

HSSFWorkbook excel的文档对象HSSFSheet excel的表单HSSFRow excel的行 HSSFCell excel的格子单元HSSFFont excel字体HSSFDataFormat 日期格式在poi1.7中才有以下2项:HSSFHeader sheet头HSSFFooter sheet尾(只有打印的时候才能看到效果)和这个样式HSSFCellStyle cell样式辅助操作包括HSSFDateUtil 日期HSSFPrintSetup 打印 HSSFErrorCo