poi读excel的一个小例子

POI还是挺好用的,没用任何问题!

---------------------------------------------------------

package com.sztelecom.reportnet.action;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.hibernate.criterion.DetachedCriteria;
import org.springframework.dao.DataAccessException;

import cn.bstar.gale.boss.dao.OperatorDao;
import cn.bstar.gale.boss.framework.BusinessException;
import cn.bstar.gale.boss.framework.TransException;
import cn.bstar.gale.boss.model.Department;
import cn.bstar.gale.boss.model.Operator;
import cn.bstar.gale.boss.service.ExcelService;
import cn.bstar.gale.boss.util.Tools;

public class Test implements ExcelService {

    private Logger logger = Logger.getLogger(Test.class);

    private OperatorDao operatorDao;

    public void exportAllOperator(OutputStream os) throws BusinessException {
        DetachedCriteria dc = DetachedCriteria.forClass(Operator.class);

        HSSFWorkbook wb = null;
        List operatorList = new ArrayList();

        try {
            operatorList = operatorDao.findOperatorByDc(dc);

            if (operatorList.size() < 1) {
                return;
            }
            wb = generateExcel(operatorList);

            if (wb != null) {
                wb.write(os);
                os.flush();
            } else {
                logger.error("======" + new Date()
                        + ": [error] generator HSSFWorkbook failed");
                throw new BusinessException("error.export.excel.fail");
            }
        } catch (IOException e) {
            logger.error("======" + new Date() + ": [error] exportAllOperator "
                    + e);
            throw new BusinessException("error.export.excel.fail");
        }
    }

    private HSSFWorkbook generateExcel(List operatorList) {
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet();
        wb.setSheetName(0, "人员记录", HSSFCell.ENCODING_UTF_16);
        sheet.setColumnWidth((short) 0, (short) ((15 * 8) / ((double) 1 / 20)));
        sheetIterator(11, sheet);

        HSSFCell cell = null;
        // 创建一个样式
        HSSFCellStyle centerStyle = wb.createCellStyle();
        // 居中对齐
        centerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

        // sheet 创建一行
        HSSFRow row = sheet.createRow((short) 0);
        // 设定列名
        row.createCell((short) 0).setCellValue("");

        createCell(1, "操作员姓名", centerStyle, row, cell);
        createCell(2, "操作员ID", centerStyle, row, cell);
        createCell(3, "登录密码", centerStyle, row, cell);
        createCell(4, "性别", centerStyle, row, cell);
        createCell(5, "身份证号码", centerStyle, row, cell);
        createCell(6, "专长", centerStyle, row, cell);
        createCell(7, "可用状态", centerStyle, row, cell);
        createCell(8, "电话", centerStyle, row, cell);
        createCell(9, "E-mail", centerStyle, row, cell);
        createCell(10, "学历", centerStyle, row, cell);
        createCell(11, "部门编号", centerStyle, row, cell);

        int s = 1;
        for (int i = 0; i < operatorList.size(); i++) {
            Operator operator = (Operator) operatorList.get(i);
            row = sheet.createRow(s);
            row.createCell((short) 0).setCellValue(s);
            setCellValue(1, operator.getNickName(), row);
            setCellValue(2, operator.getLogId(), row);
            setCellValue(3, operator.getPassword(), row);
            setCellValue(4, operator.getSex().toString(), row);
            setCellValue(5, operator.getIdCard(), row);
            setCellValue(6, operator.getSkill(), row);
            setCellValue(7, operator.getStatus().toString(), row);
            setCellValue(8, operator.getTelNo(), row);
            setCellValue(9, operator.getEmail(), row);
            setCellValue(10, operator.getGraduation(), row);
            if (operator.getDepartment() != null) {
                setCellValue(11, operator.getDepartment().getDeptId()
                        .toString(), row);
            }
            s++;
        }

        return wb;
    }

    public void setOperatorDao(OperatorDao operatorDao) {
        this.operatorDao = operatorDao;
    }

    public void importAllOperator(InputStream is, Long createdBy)
            throws TransException {
        // 读取左上端单元
        HSSFRow row = null;
        HSSFCell cell = null;
        Operator o = null;
        Department department = null;
        List oldLogIdList= null;
        String newLogId=null;
        // 创建对Excel工作簿文件的引用
        HSSFWorkbook workbook;
        try {
            //得到已经存在的人员登录帐户列表
            oldLogIdList=operatorDao.getAllOperatorLogIds();
            workbook = new HSSFWorkbook(is);
        } catch (Exception e) {
            logger.error("======" + new Date() + ": [error] enportAllOperator "
                    + e);
            throw new TransException("error.data.access");
        }

        // 用getSheetAt(int index)按索引引用,
        // 在Excel文档中,第一张工作表的缺省索引是0,
        HSSFSheet sheet = workbook.getSheetAt(0);
        List<Operator> operatorList = new ArrayList<Operator>();
        Date date = new Date();
        for (Iterator it = sheet.rowIterator(); it.hasNext();) {
            row = (HSSFRow) it.next();


            // 第一行不是数据
            if (row == sheet.getRow(0)) {
                continue;
            }

            //判断是否重复插入
            cell = row.getCell((short) 2);
            if (cellNotBlank(cell)){
                newLogId=getStringCellValue(cell);
                //如果数据库中已经存在,则不重复插入
                if(oldLogIdList.contains(newLogId)){
                    continue;
                }
            }else{
                //此字段不能为空
                continue;
            }

            o = new Operator();
            o.setLogId(getStringCellValue(cell));

            cell = row.getCell((short) 1);
            if (cellNotBlank(cell)) {
                o.setNickName(getStringCellValue(cell));
            }

            cell = row.getCell((short) 3);
            if (cellNotBlank(cell)) {
                    o.setPassword(getStringCellValue(cell));
            }

            cell = row.getCell((short) 4);
            if (cellNotBlank(cell)) {
                o.setSex(Long.valueOf(getStringCellValue(cell)));
            }

            cell = row.getCell((short) 5);
            if (cellNotBlank(cell)) {
                o.setIdCard(getStringCellValue(cell));
            }

            cell = row.getCell((short) 6);
            if (cellNotBlank(cell)) {
                o.setSkill(getStringCellValue(cell));
            }

            cell = row.getCell((short) 7);
            if (cellNotBlank(cell)) {
                o.setStatus(Long.valueOf(getStringCellValue(cell)));
            }

            cell = row.getCell((short) 8);
            if (cellNotBlank(cell)) {
                o.setTelNo(getStringCellValue(cell));
            }

            cell = row.getCell((short) 9);
            if (cellNotBlank(cell)) {
                o.setEmail(getStringCellValue(cell));
            }

            cell = row.getCell((short) 10);
            if (cellNotBlank(cell)) {
                o.setGraduation(getStringCellValue(cell));
            }

            cell = row.getCell((short) 11);
            department = new Department();
            if (cellNotBlank(cell)) {
                department.setDeptId(Long.valueOf(getStringCellValue(cell)));
                o.setDepartment(department);
            }
            // 创建时间
            o.setDateCreated(date);
            o.setCreatedBy(createdBy);
            operatorList.add(o);
        }
        try {
            for (int i = 0; i < operatorList.size(); i++) {
                operatorDao.addOperator(operatorList.get(i));
            }
        } catch (Exception be) {
            logger.error("======" + new Date() + ": [error] enportAllOperator "
                    + be);
            throw new TransException("error.data.access");
        }
    }

    private void createCell(int index, String lable, HSSFCellStyle centerStyle,
            HSSFRow row, HSSFCell cell) {
        cell = row.createCell((short) index);
        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellStyle(centerStyle);
        cell.setCellValue(lable);
    }

    private void sheetIterator(int time, HSSFSheet sheet) {
        for (int i = 1; i < time; i++) {
            sheet.setColumnWidth((short) i,
                    (short) ((40 * 8) / ((double) 1 / 20)));
        }
    }

    private void setCellValue(int index, String value, HSSFRow row) {
        HSSFCell cell = null;
        cell = row.createCell((short) index);
        cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        cell.setCellValue(value);
    }

    private boolean cellNotBlank(HSSFCell cell) {
        if (cell != null && !Tools.isBlank(getStringCellValue(cell))) {
            return true;
        }
        return false;
    }

    private String getStringCellValue(HSSFCell cell){
        String value=null;
        switch(cell.getCellType())
        {
            case HSSFCell.CELL_TYPE_STRING:
                        value=cell.getStringCellValue().trim();break;
            case HSSFCell.CELL_TYPE_NUMERIC:
                        String number=String.valueOf(cell.getNumericCellValue());
                        value=number.substring(0,number.indexOf("."));break;
            case HSSFCell.CELL_TYPE_FORMULA:
                        value=String.valueOf(cell.getCellFormula()).trim();break;
            case HSSFCell.CELL_TYPE_BOOLEAN:
                        value=String.valueOf(cell.getBooleanCellValue()).trim();break;
        }
        return value;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值