===============================================================导出excel========================================================

/*
 * 创建日期 2009-10-28
 *
 * 更改所生成文件模板为
 * 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
package com.yutong.util;

import java.io.IOException;
import java.io.OutputStream;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

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

/**
 * @author Administrator
 *
 * 更改所生成类型注释的模板为 窗口 > 首选项 > Java > 代码生成 > 代码和注释
 */
public class ExportToExcel {
    /**
     *
     * @param response response
     * @param filename filename
     * @param sheetname sheetname
     * @param titles titles
     * @param reportList reportList
     * @param width width
     * @return
     * @throws Exception Exception
     */
    public void exportToExcel(HttpServletResponse response, String filename, String sheetname, String[] titles,
                              List reportList, int width) throws Exception {
        OutputStream os = null;
        try {
            HSSFWorkbook wb = (HSSFWorkbook) writeToWorkbook(reportList, width);
            response.reset(); // 清空输出流
            // filename = new String(filename.getBytes("gbk"), "ISO-8859-1");
            response.setHeader("Content-disposition", "attachment;  filename=" + filename + ".xls");
            // 设定输出文件头
            // response.setCharacterEncoding("utf-8");
            response.setContentType("APPLICATION/OCTET-STREAM"); // 定义输出类型
            os = response.getOutputStream(); // 取得输出流
            // 生成excel文件
            wb.write(os);
            // 立即输出
            response.flushBuffer();
        } catch(IOException ex) {
            ex.printStackTrace();
        }
    }

/**
     * 导出excel.
     * @param reportList
     *            数据信息.
     * @param width
     *            列数.
     * @return Object Object.
     * @throws Exception Exception.
     */
    private Object writeToWorkbook(List reportList, int width) throws Exception {
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("new sheet");
        short rows = 0; // 行号
        HSSFRow rowObj;
        HSSFCellStyle style = wb.createCellStyle();
        if(reportList != null && reportList.size() > 0) {
            for(int i = 0; i < reportList.size(); i++) {
                String[] vo = (String[]) reportList.get(i);
                rowObj = sheet.createRow(rows++);
                for(int j = 0; j < vo.length; j++) {
                    this.generatorRows(rowObj, width, style);
                }
                for(int j = 0; j < vo.length; j++) {
                    (rowObj.getCell((short) j)).setCellValue(vo[j]);
                }
            }
        }
        return wb;
    }

/*
     * 生成列单元格 columns 一行的列数
     */
    /**
     * 生成列单元格 columns 一行的列数.
     * @param rowObj rowObj
     * @param columns columns
     * @param style style
     */
    private void generatorRows(HSSFRow rowObj, int columns, HSSFCellStyle style) {
        // 设置边框
        this.setCellStyle(style, HSSFCellStyle.BORDER_THIN);
        if(columns > 0) {
            for(int i = 0; i < columns; i++) {
                HSSFCell csCell = rowObj.createCell((short) i);
               //csCell.setEncoding(HSSFCell.ENCODING_UTF_16);
                csCell.setCellStyle(style);
            }
        }
    }

/**
     * @param style style
     * @param type type
     */
    public void setCellStyle(HSSFCellStyle style, short type) {
        style.setBorderBottom(type);// 下边框
        style.setBorderLeft(type);// 左边框
        style.setBorderRight(type);// 右边框
        style.setBorderTop(type);// 上边框
    }
    
    public void  getWorkbook(HttpServletResponse response,List<Map<String,String>> listVals,String[] listCols,String[] listFlds){
        OutputStream os = null;
        HSSFWorkbook workbook = new HSSFWorkbook();
        HSSFSheet sheet = workbook.createSheet("类信息");
        
        HSSFRow row = sheet.createRow(0); //创建第1行,也就是输出表头
        HSSFCell cell;
        try {
        String filename="";
        int row1=-1;
        if(listCols!=null && listCols.length>0){
            row1=row1+1;
            for(int i=0;i<listCols.length;i++){
             cell = row.createCell(i); //创建第i列
             cell.setCellValue(new HSSFRichTextString(listCols[i]));
            }
        }
       //下面是输出各行的数据
        for (int i = 0; i < listVals.size(); i++) {
            Map<String,String> map=listVals.get(i);
                row=sheet.createRow(i+1+row1);//创建第i+1行
                for(int j=0;j<listFlds.length;j++){
                    cell=row.createCell(j);
                    Object val=map.get(listFlds[j]);
                    if(val!=null){
                        cell.setCellValue(val.toString());
                    }else
                    {
                        cell.setCellValue("");
                    }
                }
          
        }
    
        
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;
        String month_ = new String("" + month);
        if (month < 10) {
            month_ = "0" + month;
        }
        int day = c.get(Calendar.DAY_OF_MONTH);
        String day_ = new String("" + day);
        if (day < 10) {
            day_ = "0" + day;
        }
        
        filename=year + "-" + month_ + "-" + day_ + "";
        response.reset(); // 清空输出流
        // filename = new String(filename.getBytes("gbk"), "ISO-8859-1");
        response.setHeader("Content-disposition", "attachment;  filename=" + filename + ".xls");
        // 设定输出文件头
        // response.setCharacterEncoding("utf-8");
        response.setContentType("APPLICATION/OCTET-STREAM"); // 定义输出类型
        os = response.getOutputStream(); // 取得输出流
        // 生成excel文件
        workbook.write(os);
        // 立即输出
        response.flushBuffer();
    } catch(IOException ex) {
        ex.printStackTrace();
    }

}
    
   
    
    /**
     * 对excel表格的值进行处理.
     *
     * @param cell
     *            cell
     * @return str
     */
    
    public static String getCellValue(HSSFCell cell) {
        String str = "";
        // System.err.println("***************TYPE is "+cell.getCellType());
        if(cell != null && cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            str = String.valueOf(cell.getStringCellValue()); // .trim();
        }
        if(cell != null && cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
            str = cell.getStringCellValue(); // .trim();
        }
        if(cell != null && cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
            str = String.valueOf(cell.getBooleanCellValue()); // .trim();
        }
        if(cell != null && cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) {
            str = ""; // .trim();
        }
        return str.trim();
    }
    
    public static String getDeptNameByCode(String key){
        Map map=new HashMap();
        map.put("ZJ", "制件一车间");
        map.put("ZA", "制件二车间");
        map.put("1000", "ZJ");
        map.put("1200", "ZA");
        
        return map.get(key).toString();
    }

}

==========================================================================导入excel==================================================

public ActionForward insertByexcel(ActionMapping mapping, ActionForm form, HttpServletRequest request,
                HttpServletResponse response) {
        request.getSession().removeAttribute("paramquery");
        request.getSession().removeAttribute("mapForexecut");
        request.getSession().removeAttribute("batchNo");
        PrintWriter out = null;
        Hashtable files = (Hashtable) form.getMultipartRequestHandler().getFileElements();
        Iterator it = files.values().iterator();
        String isSizeBig = "0";
        Object fileObj = null;
        try {
            while (it.hasNext() && !"1".equals(isSizeBig)) {
                fileObj = it.next();
                isSizeBig = "1";
            }
            // ajax返回用到的out
            out = response.getWriter();
            // 把文件转成excel数据
            HSSFWorkbook book = createWorkBook(((FormFile[]) fileObj)[0]);
            // 判断有几张活动的sheet表
            int size = 2;//book.getActiveSheetIndex();
            HSSFSheet sheet = null;
            AbstractManager manager = getEntityManager();
            // 存取版本号
            Map batchNos = new HashMap();
            // 参数map,到后面放到session里,执行的时候用
            Map param = new HashMap();
            //批次号只生成一次
            String batchNo ="";
            for (int s = 0; s < size; s++) {
                sheet = book.getSheetAt(s);
                // 第一个sheet保存着基本信息,如工厂ID,专业组编码和专业组开始时间
                if (s == 0) {
                    for (int i = 1; i <= sheet.getLastRowNum(); i++) {
                        try {
                            HSSFRow ros = sheet.getRow(i);

String facId = ExportToExcel.getCellValue(ros.getCell(0));
                            // 根据工厂ID获取部门
                            String deptCode = ExportToExcel.getDeptNameByCode(facId);
                            // 工作组
                            String wrkgrpCode = ExportToExcel.getCellValue(ros.getCell(1));
                            //专业组开始时间
                            Date startDate = ros.getCell(2).getDateCellValue();
                            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                            Format format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

param.put("iv_factory_id", facId);
                            param.put("iv_dept", deptCode);
                            // 生成工作组日历
                            if ((null != facId && !"".equals(facId) && deptCode != null && !"".equals(deptCode)) && batchNo.equals("")){
                                // 调用存储过程,返回批次号
                                paichanDataManager.queryVersionByWrkgrpWorkDay2(param);
                                batchNo = param.get("o_versionid").toString(); // 生成批次号
                            }
                               
                            param.put("iv_batch_no", batchNo);
                            param.put("iv_depart", deptCode);
                            // 把值放到排产参数表中
                            PaichanParam pPara = new PaichanParam();
                            pPara.setFactoryId(facId);
                            pPara.setStartDate(startDate);
                            pPara.setBatchNo(batchNo);
                            pPara.setDeptCode(deptCode);
                            pPara.setWrkgrpCode(wrkgrpCode);
                            pPara.setCreateUser(getUserName(request));
                            pPara.setIsuse("Y");
                            manager.insertByFullStatementName("com.yutong.pc.paichan.model.PaichanParam.insert", pPara);

// 把批次号存起来,在sheet2页中用
                           // batchNos.put((facId.trim() + wrkgrpCode.trim()), batchNo);

} catch (Exception e) {
                            //out.println("<script>parent.callbackUpload('"+e.getMessage()+"')</script>");
                            saveDirectlyMessage(request, e.getMessage());
                            e.printStackTrace();
                            return mapping.findForward(EXPORT);

}

}
                } else {
                    for (int i = 1; i <= sheet.getLastRowNum(); i++) {

HSSFRow ros = sheet.getRow(i);

PaichanData paichan = new PaichanData();

paichan.setFactoryId(ExportToExcel.getCellValue(ros.getCell(0)));
                        paichan.setWrkgrpCode(ExportToExcel.getCellValue(ros.getCell(1)));
                        // 获取batchNos的key
                        String key = paichan.getFactoryId().trim() + paichan.getWrkgrpCode().trim();

// String batchNo = batchNos.get(key).toString();
                        paichan.setBatchNo(batchNo);
                        paichan.setDepartCode(ExportToExcel.getDeptNameByCode(paichan.getFactoryId()));
                        paichan.setUnitCode(ExportToExcel.getCellValue(ros.getCell(2)));
                        paichan.setDeliveryQuantity(Integer.parseInt(ExportToExcel.getCellValue(ros.getCell(3))));

String day = "";
                        String time = "";
                        if (0 == ros.getCell(4).getCellType()) {
                            // 判断是否为日期类型
                            if (HSSFDateUtil.isCellDateFormatted(ros.getCell(4))) {
                                // 用于转化为日期格式
                                Date d = ros.getCell(4).getDateCellValue();
                                DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
                                day = formater.format(d);
                            } else {
                                // 用于格式化数字,只保留数字的整数部分
                                DecimalFormat df = new DecimalFormat("########");
                                day = df.format(ros.getCell(4).getNumericCellValue());
                            }
                        } else {
                            day = ExportToExcel.getCellValue(ros.getCell(4));
                        }

if (0 == ros.getCell(5).getCellType()) {
                            // 判断是否为日期类型
                            if (HSSFDateUtil.isCellDateFormatted(ros.getCell(5))) {
                                // 用于转化为日期格式
                                Date d = ros.getCell(5).getDateCellValue();
                                DateFormat formater = new SimpleDateFormat("HH:mm:ss");
                                time = formater.format(d);
                            } else {
                                // 用于格式化数字,只保留数字的整数部分
                                DecimalFormat df = new DecimalFormat("########");
                                time = df.format(ros.getCell(5).getNumericCellValue());
                            }
                        } else {
                            time = ExportToExcel.getCellValue(ros.getCell(5));
                        }

String datestr = day.trim() + " " + time.trim();
                        // ros.getCell(4).setCellType(Cell.CELL_TYPE_STRING);
                        String hourCy = ExportToExcel.getCellValue(ros.getCell(6));
                        int houri = Integer.parseInt("-" + hourCy);
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        Date date = sdf.parse(datestr);
                        Calendar cal = Calendar.getInstance();
                        cal.setTime(date);
                        cal.add(Calendar.HOUR, houri);

Format format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        Date deliveryDate = sdf.parse(sdf.format(cal.getTime()));
                        paichan.setDeliveryDate(deliveryDate);

paichan.setMaterialDesc("");
                        paichan.setMrpController("G86");
                        paichan.setOrderCode("1");
                        paichan.setSchedulerStaff("Z02");
                        paichan.setCreateUser(getUserName(request));
                        paichan.setCreateDate(new Date());
                        paichan.setIsuse("Y");
                        // paichan.setVersionId(versionId);版本号有后台更新

paichanDataManager.excelUpload(paichan);

}

}
            }
            if(param!=null && !batchNo.equals("")){
               // request.getSession().removeAttribute("mapForexecut");
                request.getSession().setAttribute("mapForexecut", param);
                //批量导出排产结果时用到的
                request.getSession().setAttribute("batchNo", batchNo);
                out.println("<script>parent.callbackUpload('" + batchNo+ "')</script>");
            }else{
                
            }

} catch (Exception e) {
            e.printStackTrace();
            out.println("<script>parent.callbackUpload('error')</script>");
        }
        return null;
    }

======================================================导出csv===============================================================

package com.yutong.util;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.supercsv.io.CsvBeanWriter;
import org.supercsv.io.CsvMapWriter;
import org.supercsv.io.ICsvBeanWriter;
import org.supercsv.io.ICsvMapWriter;
import org.supercsv.prefs.CsvPreference;

public class ExportToCsv {
     
    public static void exportMapToExcel(HttpServletResponse response, String filename,  String[] header,String[] keys, List<Map<String,Object>> reportList ){
        ICsvMapWriter writer = null;
        try {
            response.reset(); // 清空输出流
            filename = new String(filename.getBytes("gbk"), "ISO-8859-1");
            response.setHeader("Content-disposition", "attachment;  filename=" + filename + ".csv");
            // 设定输出文件头
            response.setCharacterEncoding("gbk");
            response.setContentType("APPLICATION/OCTET-STREAM"); // 定义输出类型
            writer = new CsvMapWriter(response.getWriter(), CsvPreference.EXCEL_PREFERENCE);
            
            writer.writeHeader(header);
            for(int i=0;i<reportList.size();i++){
                writer.write((Map<String, Object>)reportList.get(i), keys);
            }
            // 立即输出
            response.flushBuffer();
            writer.close();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    @SuppressWarnings("unchecked")
    public static void exportBeanToExcel(HttpServletResponse response, String filename,  String[] header,String[] keys, List reportList ){
        ICsvBeanWriter writer = null;
        try {
            response.reset(); // 清空输出流
            filename = new String(filename.getBytes("gbk"), "ISO-8859-1");
            response.setHeader("Content-disposition", "attachment;  filename=" + filename + ".csv");
            // 设定输出文件头
            response.setCharacterEncoding("gbk");
            response.setContentType("APPLICATION/OCTET-STREAM"); // 定义输出类型
            writer = new CsvBeanWriter(response.getWriter(), CsvPreference.EXCEL_PREFERENCE);
            
            writer.writeHeader(header);
            for(int i=0;i<reportList.size();i++){
                Object values = reportList.get(i);
                writer.write(values, keys);
            }
            // 立即输出
            response.flushBuffer();
            writer.close();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

java导出excel,导入excel,导出csv工具类整理相关推荐

  1. 关于excel导入到封装成工具类jar包和web版门店收银网络无法无法连接上的解决方法...

    2011-12-4 1.excel导入工具封装碰到如何给传输过来的泛型对象进行对象点Setter的方法,解决方法应该可以查看struts2框架的源码查看他在拦截器作用下是怎么给action这个类的一个 ...

  2. 大数据量的Excel导入和导出

    大数据量的Excel导入和导出 涉及到的技术 poi:使用SXSSFWorkbook,对数据进行分页且批量写入到磁盘(可以是任何outputsteam),减少数据在内存中的存储 easyExcel:从 ...

  3. 前端实现 Excel 导入和导出功能

    注意:Excel的导入.导出功能一般情况下都是服务端完成,这里只是记录一下前端实现方法,供小众场景使用. 这里的实现要依赖第三方库:xlsx. 兼容性:IE9+ 安装 xlsx npm i -S ht ...

  4. C# Excel导入、导出

    C# Excel导入.导出 本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含 ...

  5. C# Excel导入与导出

    Excel的结构     1.Workbook工作簿(也就是文件)     2.Sheet(也就是一个表)     3.Row(也就是一个数据行)     4.Cell(单元格)     5.Valu ...

  6. java excel 取值_java实现Excel 单元格取值工具类

    在工作中经常遇到通过excel获取数据的需求,比如通过excel将数据提交到数据库等.现针对excel单元格的取值方法提取出来作为一个工具类. 具体代码如下: import org.apache.po ...

  7. JAVA使用POL导入Excel解决数据精度问题

    JAVA使用POL导入Excel解决数据精度问题 解决导入时数据精度损失问题 问题描述 解决方案 结语 解决导入时数据精度损失问题 这篇文章主要是给Excel数据导入时存在精度损失问题提出解决方案.如 ...

  8. 使用POI在Excel中动态生成图表工具类(支持柱状、组合、环状图、折线图、等常用图)

    使用POI在Excel中动态生成图表工具类 使用POI在Excel中动态生成图表工具类 由于公司是一个生成报表的机构,之前一直使用pageOffice,但是公司领导就是不买,你说公司那样有钱磨磨唧唧干 ...

  9. JAVA之多sheet页表格生成工具类

    JAVA之多sheet页表格生成工具类 主要方法: import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.h ...

最新文章

  1. Python案例:使用XPath的爬虫
  2. 当决定使用 Ubuntu 来开发时
  3. 最清楚的mmap()详解与源码分析
  4. centos 搭建 svn服务器
  5. 基于 SpringBoot2 + MybatisPlus 的商城管理系统(附源码)
  6. 抖音用户规模达5.18亿,数据解读抖音支付背后逻辑?
  7. OpenSSL 创建自签名证书
  8. Permission denied (maybe missing INTERNET permission) 错误解决
  9. Android系统(45)--Monkey 测试相关知识
  10. BeanFactory和FactoryBean
  11. 蒸汽管道图纸符号_管道设备表常用符号.ppt
  12. asp.net/net/c#电子购物商城系统-成品
  13. JS获取本机IP地址的方法
  14. 基于国密算法SM2非证书标识公钥密码技术(IPK)
  15. 基于协同过滤算法的旅游推荐系统
  16. kic炉温测试软件中文版,KIC炉温测试仪-KIC2000炉温测试
  17. 黑盒测试方法-----状态转换图
  18. 微信第三方平台授权流程说明
  19. [附源码]Java计算机毕业设计SSM高校智慧党建党务管理系统
  20. Java--入门指引

热门文章

  1. 关于和||的优先级问题
  2. 【编译原理】词法分析(正规式与自动机)
  3. php防止重复刷新,php防止页面重复刷新
  4. Python qrcode制作二维码
  5. 圣诞树-前端代码html--动态
  6. ESP8266 下载模式 GPIO 研究
  7. 常见的几个凸函数与凹函数
  8. 拼多多API—获取商品详情、关键词获取取商品、获得搜索词统计获得搜索词推荐
  9. 上海的二手房价有所下跌,现在你们的工资够买间厕所了吗?Python帮你分析上海的二手房价
  10. 使用Rook+Ceph在Kubernetes上作持久存储