/**
     * 导入Excel文件数据
     *
     * @param file 将要导入的Excel文件
     * @param fileCheckKeyWord 用于判断导入文件是否正确的关键字符串
     * @param keyX 用于判断导入文件是否正确的关键字符串所在的x坐标位置
     * @param keyY 用于判断导入文件是否正确的关键字符串所在的y坐标位置
     * @param startRow 导入数据开始行数
     * @param startLine 导入数据开始列数
     *
     * @return List《Object[]》
     * @throws Exception
     */
    public static List<Object[]> excelImport(File file, String fileCheckKeyWord, int keyX, int keyY, int startRow, int startLine) throws Exception{
        List<Object[]> dataList = new ArrayList<Object[]>();
        InputStream inputStream = new FileInputStream(file);
        WorkbookSettings wbs = new WorkbookSettings();
        wbs.setSuppressWarnings(true);
        Workbook book = Workbook.getWorkbook(inputStream, wbs);
        Sheet sh = book.getSheet(0);
        //判断选择excel文件是否正确
        String typeContent = sh.getCell(keyX, keyY).getContents().trim();
        if(!typeContent.equals(fileCheckKeyWord)){
            return dataList;
        }
        //行数
        int rows = sh.getRows();
        if(rows >= 65536){//超出 excel 03最大行数
            return dataList;
        }
        //列数
        int lines = sh.getColumns();
        //判断导入的数据是否有误
        Object[] dataObjArr = null;
        for(int i = startRow; i <= rows; i++){
            dataObjArr = new Object[lines - startLine + 1];
            for(int j = startLine; j <= lines; j++){
                String content = sh.getCell(j, i).getContents().trim();
                if(ComFun.strNull(content) && !content.trim().equals("")){
                    dataObjArr[j - startLine] = content;
                } else {
                    dataObjArr[j - startLine] = "";
                }
            }
        }
        return dataList;
    }

/**
     * 导出EXCEL文件
     *
     * @param fileName 导出文件名 (为NULL时,文件名称按照时间戳生成)
     * @param headCellNames 头部标题名称组
     * @param dataList 数据List,与参数headCellNames对应
     */
    public static void excelExport(String fileName,
            String[] headCellNames, List<Object[]> dataList) throws IOException, WriteException {
        if(ComFun.strNull(dataList) && dataList.size() > 0){
            if(!ComFun.strNull(fileName)){
                fileName = DateFormatUtil.dateToStr(new Date(), DateFormatUtil.TYPE4);
            }
            String[] cellNames = new String[headCellNames.length + 1];
            cellNames[0] = "序号";
            for(int i=0; i<headCellNames.length; i++){
                cellNames[i+1] = headCellNames[i];
            }
            WritableWorkbook book = Workbook.createWorkbook(new File("C:\\ACjba\\fileDownload\\" + fileName + ".xls"));// 创建文件
            WritableSheet sheet = book.createSheet(fileName, 0);// 创建工作薄
            sheet.setName(fileName);
            sheet.getSettings().setVerticalFreeze(2);// 冻结前两行
            /* 开始创建sheet第一行 */
            // 标题字体、样式
            WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 12,
                    WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
                    Colour.BLACK);// 设置标题字体
            WritableCellFormat titleFormat = new WritableCellFormat(titleFont);// 设置标题格式
            titleFormat.setAlignment(Alignment.CENTRE);
            titleFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
            // 合并单元格
            sheet.mergeCells(1, 0, cellNames.length, 0);
            // 设置行高
            sheet.setRowView(0, 800, false);// 40磅
            // label理解为sheet中的单元格,此处在第1列0行加入指定内容、样式
            Label titleLabel = new Label(1, 0, fileName, titleFormat);
            // 将label加入到sheet中,第一行创建完成
            sheet.addCell(titleLabel);
    
            /* 开始创建第二行 */
            // 表头字体、样式
            WritableFont cellFont = new WritableFont(WritableFont.ARIAL, 9,
                    WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
                    Colour.BLACK);
            WritableCellFormat cellFormat = new WritableCellFormat(cellFont);
            // 设置自动换行
            cellFormat.setWrap(true);
            cellFormat.setAlignment(Alignment.CENTRE);
            cellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
            cellFormat.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 设置边框
            // 设置列宽
            for (int i = 1; i <= cellNames.length; i++) {
                sheet.setColumnView(i, 20);
                sheet.setRowView(1, 440);// 22磅
                sheet.addCell(new Label(i, 1, cellNames[i - 1], cellFormat));
            }
    
            // 创建第三行
            sheet.setRowView(2, 440);// 22磅
            /* 循环创建传入集合(第四行以后) */
            WritableFont bodyFont = new WritableFont(WritableFont.ARIAL, 9,
                    WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE,
                    Colour.BLACK);
            WritableCellFormat bodyFormat = new WritableCellFormat(bodyFont);
            // 设置自动换行
            bodyFormat.setWrap(true);
            bodyFormat.setAlignment(Alignment.CENTRE);
            bodyFormat.setVerticalAlignment(VerticalAlignment.CENTRE);
            bodyFormat.setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);// 设置边框
            int r = 2;
            for (int i=0;i<dataList.size();i++) {
                sheet.setRowView(r, 440);
                sheet.addCell(new Label(1, r, String.valueOf(r - 1), bodyFormat));// 序号
                for(int j=2; j<cellNames.length+1; j++){
                    sheet.addCell(new Label(j, r, String.valueOf(dataList.get(i)[j-2]), bodyFormat));
                }
                r++;
            }
            book.write();
            book.close();
        }
    }

Excel文件导入导出的更多相关文章

  1. NodeJs之EXCEL文件导入导出MongoDB数据库数据

    NodeJs之EXCEL文件导入导出MongoDB数据库数据 一,介绍与需求 1.1,介绍 (1),node-xlsx : 基于Node.js解析excel文件数据及生成excel文件. (2),ex ...

  2. Excel导入导出工具(简单、好用且轻量级的海量Excel文件导入导出解决方案.)

    Excel导入导出工具(简单.好用且轻量级的海量Excel文件导入导出解决方案.) 置顶 2019-09-07 16:47:10 $9420 阅读数 261更多 分类专栏: java   版权声明:本 ...

  3. Excel文件导入导出(基于Nodejs、exceljs)

    Excel导入.导出是大多数项目的管理后台必备功能.几年来使用过多个该功能的实现包,最近一次开发该功能,突然发现一个人气极高(3000+)的包,这里记录一下使用方法. 大凡厉害的技术的文档咋一看都想字 ...

  4. C# excel文件导入导出

    欢迎关注微信公众号 C#编程大全 这里有更多入门级实例帮你快速成长 在C#交流群里,看到很多小伙伴在excel数据导入导出到C#界面上存在疑惑,所以今天专门做了这个主题,希望大家有所收获! 环境:wi ...

  5. postman 测试Excel文件导入导出功能

    1.导入的测试方法 选择form-data,key值填写方法对应的参数,选择File,Value处上传文件即可. 2. 导出的测试方法 在导出文件的时候,响应结果是乱码,然后在测试的时候选择下载,下载 ...

  6. 用NODEJS处理EXCEL文件导入导出,文件上传

    參考文章 http://librajt.github.io/2013/08/04/handle-excel-file-with-nodejs/ 对照了 ExcelJS ,https://github. ...

  7. CSV文件导入导出MySQL

    使用SQLyog 工具导入文件数据到MySQL: Excel文件导入导出: 需要驱动:Microsoft Office 2007驱动 导入需要注意的问题:1.Excel里数值列,默认导入会变成浮点型. ...

  8. c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出

    c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...

  9. Laravel Excel 实现 Excel-CSV 文件导入导出功能

    Laravel Excel 是一款基于 PHPExcel 开发的Laravel框架专用的 Excel/CSV 文件导入导出功能的扩展包,用起来的非常方便. 它的 Github 地址是:https:// ...

随机推荐

  1. 轰炸III

    题目背景 一个大小为N*M的城市遭到了X次轰炸,每次都炸了一个每条边都与边界平行的矩形. 题目描述 在轰炸后,有Y个关键点,指挥官想知道,它们有没有受到过轰炸,如果有,被炸了几次,最后一次是第几轮. ...

  2. 设置Linux使用SMTP服务发送邮件

    很多时候我们需要知道服务器的运行状态,比如发生了异常的报警.数据库备份的状态等,假如服务器自动跟你汇报那就好了,我们可以通过设置当触发某些条件时让服务器发送邮件给你,这样你就可以了解你的服务器的状态怎 ...

  3. STL源码剖析 学习笔记 MiniSTL

    https://github.com/joeyleeeeeee97 目录: 第二章 空间适配器 第三章 迭代器 第四章 序列式容器(vector,list,deque,stack,heap,prior ...

  4. project处理 InteropServices.COMException 异常

    project文件无法上传,在上传中的hangfire出现了这个异常 System.Runtime.InteropServices.COMException 这个是因为website的权限是IUser ...

  5. 一份关于jvm内存调优及原理的学习笔记(转)

    JVM 一.虚拟机的基本结构 1.jvm整体架构 类加载子系统:负责从文件系统或者网络中加载class信息,存入方法区中. 方法区(Perm):存放加载后的class信息,包括静态方法,jdk1.6以 ...

  6. 3.1-HDLC/PPP

    同步串行链路(Serail Point-to-Point Link)的封装 3.1-HDLC/PPP     高级数据链路控制HDLC(High-Level Data Link Control):   ...

  7. 1.4-动态路由协议OSPF③

    OSPF的路由汇总 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                         用默认的网络地址 因为 无论在何种路 ...

  8. Java推断和检查网络

    在实践项目中.常常要处理网络异常等问题.为此,专门设计一个类,随时能够使用. import java.io.IOException; import java.net.InetAddress; impo ...

  9. HDU 5305 Friends(dfs)

    Friends Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Su ...

  10. C# 生成pdf文件客户端下载

    itextsharp.dll 下载:http://sourceforge.net/projects/itextsharp/ 程序需引用:itextsharp.dll,itextsharp.pdfa.d ...