/**
     * 导入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. Windows学习总结(10)——Windows系统中常用的CMD命令详解

    1.ping命令 ping是电脑网络故障诊断中的常用的命令,它的作用是用来检查网络是否通畅或者网络连接速度.我们来看一下PING命令的具体表述. 日常的诊断过程中我们最常用到的就是诊断连接是否通畅. ...

  2. 关于字符串不为空 错误:s!=null

    错误:s!=null 正确:StringUtils.isNotBlank(s); public static boolean isBlank(CharSequence cs) { int strLen ...

  3. Python学习笔记 (1)Hello World(环境搭建+输出Hello World!)

    随想 高考发挥失常.科三遇火车发挥失常,各种不顺……突然发现假期都快没了,才想起高考前想象的这个假期要做的一堆事,现在来多完成一件吧. 这几篇博客仅只是我的学习笔记,凑合看吧.我这个python小白看 ...

  4. 特种部队(codevs 1427)

    题目描述 Description 某特种部队接到一个任务,需要潜入一个仓库.该部队士兵分为两路,第一路士兵已经在正面牵制住了敌人,第二路士兵正在悄悄地从后方秘密潜入敌人的仓库.当他们到达仓库时候,发现 ...

  5. jQuery动态添加表格1

    用jquery的append方法在指定行的后面新增一行tr,会把新增的行的html追加到指定行的html里面 content +="<tr><td>123</t ...

  6. $scope的生命周期

    model mutation 模型改变 model observation 模型观察 scope destruction scope结束 神奇的scope,一个angular应用只有一个scope,一 ...

  7. 分享一个灰常好的 dapper 扩展插件: Rainbow

    dapper 是一个效率非常高的orm  框架 ,效率要远远大于 我们大微软的EF .    它只有一个类文件,非常之小.(在 EF 5.0 后 微软已经做了 改进) ps; 由于之前我也没测试过,只 ...

  8. AbstractList 重写 equals() 方法

    题目内容 题目内容很简单,就是创建 ArrayList 和 Vector 集合,向两者添加相同内容的字符串,最后用 equals() 方法比较是否相等. 这里就考察了 "==" 和 ...

  9. 今天開始慢下脚步,開始ios技术知识的查漏补缺。

    从2014.6.30 開始工作算起. 如今已经是第416天了.不止不觉.时间过的真快. 通过对之前工作的总结.发现,你的知识面.会决定你面对问题时的态度.过程和结果. 简单来讲.知识面拓展了,你才干有 ...

  10. 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取

    装饰者模式的学习(c#) 案例转自https://www.cnblogs.com/stonefeng/p/5679638.html //主体基类 using System;using System.C ...