<small id='zMkIsv1fZb'></small> <noframes id='9vnhKew2NV'>

  • <tfoot id='kBxZ'></tfoot>

      <legend id='Vq2CL'><style id='dI1njNTB'><dir id='pM7q01G6'><q id='beoUSpdR'></q></dir></style></legend>
      <i id='64tp'><tr id='UiY5Kt'><dt id='4fJPoGDnmy'><q id='DCNnY31i6'><span id='rJlbYPSXCM'><b id='bor6j'><form id='Bpv9ljdI'><ins id='p7CTmb4'></ins><ul id='7MEpSq'></ul><sub id='MhYONgSv'></sub></form><legend id='lzqBv1'></legend><bdo id='FDEG4NBh'><pre id='ZNL3C'><center id='S7aXGQ'></center></pre></bdo></b><th id='aAJ6bcq'></th></span></q></dt></tr></i><div id='CJVRvNX'><tfoot id='GiTfJm'></tfoot><dl id='4yOs'><fieldset id='8xYJm'></fieldset></dl></div>

          <bdo id='4ao1AK7V'></bdo><ul id='ZLqQU'></ul>

          1. <li id='xhUrj8VZki'></li>
            登陆

            一号平台时时彩-Apache POI运用详解(看完这篇基本上能敷衍工作中常用的excel)

            admin 2019-09-07 299人围观 ,发现0个评论

            本号首要用于共享企业中常用的技能,愈加侧重于有用,欢迎重视,便于阅读其它更多有用的历史文章。

            一 :简介

            开发中常常会规划到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel现在有两个结构,一个是apache 的poi, 另一个是 Java Excel

            Apache POI 简介是用Java编写的免费开源的跨渠道的 Java API,Apache POI供给API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格局档案读和写的功用。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“不幸的含糊完成”。

            官方主页: http://poi.apache.org/index.html

            API文档: http://poi.apache.org/apidocs/index.html

            Java Excel是一开放源码项目,经过它Java开发人员能够读取Excel文件的内容、创立新的Excel文件、更新现已存在的Excel文件。jxl 因为其细巧 易用的特色, 逐步现已替代了 POI-excel的位置, 成为了越来越多的java开发人员生成excel文件的首选。

            因为apache poi 在项目顶用的比较多,本篇博客只解说apache poi,不讲jxl

            二:Apache POI常用的类

            • HSSF - 供给读写Microsoft Excel XLS格局档案的功用。
            • XSSF - 供给读写Microsoft Excel OOXML XLSX格局档案的功用。
            • HWPF - 供给读写Microsoft Word DOC97格局档案的功用。
            • XWPF - 供给读写Microsoft Word DOC2003格局档案的功用。
            • HSLF - 供给读写Microsoft PowerPoint格局档案的功用。
            • HDGF - 供给读Microsoft Visio格局档案的功用。
            • HPBF - 供给读Microsoft Publisher格局档案的功用。
            • HSMF - 供给读Microsoft Outlook格局档案的功用。

            在开发中咱们常常运用HSSF用来操作Excel处理表格数据,关于其它的不常常运用。

            HSSF 是Horrible SpreadSheet Format的缩写,经过HSSF,你能够用纯Java代码来读取、写入、修正Excel文件。HSSF 为读取操作供给了两类API:usermodel和eventusermodel,即“用户模型”和“事情-用户模型”。

            常用的类和办法

            • HSSFWorkbook :作业簿,代表一个excel的整个文档
            • HSSFWorkbook();// 创立一个新的作业簿
            • HSSFWorkbook(InputStream inputStream); // 创立一个相关输入流的作业簿,能够将一个excel文件封装成作业簿
            • HSSFSheet createSheet(String sheetname); 创立一个新的Sheet
            • HSSFSheet getSheet(String sheetName); 经过称号获取Sheet
            • HSSFSheet getSheetAt(int index); // 经过索引获取Sheet,索引从0开端
            • HSSFCellStyle createCellStyle(); 创立单元格款式
            • int getNumberOfSheets(); 获取sheet的个数
            • setActiveSheet(int index); 设置默许选中的作业表
            • write();
            • write(File newFile);
            • write(OutputStream stream);
            • HSSFSheet:作业表
            • HSSFRow createRow(int rownum); 创立新行,需求指定行号,行号从0开端
            • HSSFRow getRow(int index); 依据索引获取指定的行
            • int addMergedRegion(CellRangeAddress region); 兼并单元格
            • CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol); 单元格规模, 用于兼并单元格,需求指定要兼并的首行、最终一行、首列、最终一列。
            • autoSizeColumn(int column); 主动调整列的宽度来习惯内容
            • getLastRowNum(); 获取最终的行的索引,没有行或许只要一行的时分回来0
            • setColumnWidth(int columnIndex, int width); 设置某一列的宽度,width=字符个数 * 256,例如20个字符的宽度便是20 * 256
            • HSSFRow :行
            • HSSFCell createCell(int column); 创立新的单元格
            • HSSFCell setCell(shot index);
            • HSSFCell getCell(shot index);
            • setRowStyle(HSSFCellStyle style); 设置行款式
            • short getLastCellNum(); 获取最终的单元格号,假如单元格有榜首个开端算,lastCellNum便是列的个数
            • setHeightInPoints(float height); 设置行的高度
            • HSSFCell:单元格
            • setCellValue(String value); 设置单元格的值
            • setCellType(); 设置单元格类型,如 字符串、数字、布尔等
            • setCellStyle(); 设置单元格款式
            • String getStringCellValue(); 获取单元格中的字符串值
            • setCellStyle(HSSFCellStyle style); 设置单元格款式,例如字体、加粗、格局化
            • setCellFormula(String formula); 设置核算公式,核算的成果作为单元格的值,也供给了反常常用的函数,如求和"sum(A1,C1)"、日期函数、字符串相关函数、CountIf和SumIf函数、随机数函数等
            • HSSFCellStyle :单元格款式
            • setFont(Font font); 为单元格设置字体款式
            • setAlignment(HorizontalAlignment align); // 设置水平对齐方法
            • setVerticalAlignment(VerticalAlignme一号平台时时彩-Apache POI运用详解(看完这篇基本上能敷衍工作中常用的excel)nt align); // 设置笔直对齐方法
            • setFillPattern(FillPatternType fp);
            • setFillForegroundColor(short bg); 设置前景色
            • setFillBackgroundColor(short bg); 设置布景色彩
            • HSSFFont:字体,
            • setColor(short color);// 设置字体色彩
            • setBold(boolean bold); // 设置是否粗体
            • setItalic(boolean italic); 设置歪斜
            • setUnderline(byte underline); 设置下划线
            • HSSFName:称号
            • HSSFDataFormat :日期格局化
            • HSSFHeader : Sheet的头部
            • HSSFFooter :Sheet的尾部
            • HSSFDateUtil :日期东西
            • HSSFPrintSetup :打印设置
            • HSSFErrorConstants:错误信息表

            Excel中的作业簿、作业表、行、单元格中的联系:

            • 一个Excel文件对应于一个workbook(HSSFWorkbook),
            • 一个workbook能够有多个sheet(HSSFSheet)组成,
            • 一个sheet是由多个row(HSSFRow)组成,
            • 一个row是由多个cell(HSSFCell)组成

            三:根底示例

            首要引进apache poi的依靠

             
            org.apache.poi
            poi
            3.8

            示例一:在桌面上生成一个Excel文件

            public static void createExcel() throws IOException{
            // 获取桌面途径
            FileSystemView fsv = FileSystemView.getFileSystemView();
            String desktop = fsv.getHomeDirectory().getPath();
            String filePath = desktop + "/template.xls";

            File file = new File(filePath);
            OutputStream outputStream = new FileOutputStream(file);
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet("Sheet1");
            HSSFRow row = sheet.createRow(0);
            row.createCell(0).setCellValue("id");
            row.createCell(1).setCellValue("订单号");
            row.createCell(2).setCellValue("下单时刻");
            row.createCell(3).setCellValue("个数");
            row.createCell(4).setCellValue("单价");
            row.createCell(5).setCellValue("订单金额");
            row.setHeightInPoints(30); // 设置行的高度

            HSSFRow row1 = sheet.createRow(1);
            row1.createCell(0).setCellValue("1");
            row1.createCell(1).setCellValue("NO00001");

            // 日期格局化
            HSSFCellStyle cellStyle2 = workbook.createCel一号平台时时彩-Apache POI运用详解(看完这篇基本上能敷衍工作中常用的excel)lStyle();
            HSSFCreationHelper creationHelper = workbook.getCreationHelper();
            cellStyle2.setDataFormat(creationHelper.createDataFormat().getFormat("yyyy-MM-dd HH:mm:ss"));
            sheet.setColumnWidth(2, 20 * 256); // 设置列的宽度

            HSSFCell cell2 = row1.createCell(2);
            cell2.setCellStyle(cellStyle2);
            cell2.setCellValue(new Date());

            row1.createCell(3).setCellValue(2);


            // 保存两位小数
            HSSFCellStyle cellStyle3 = workbook.createCellStyle();
            cellStyle3.setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00"));
            HSSFCell cell4 = row1.createCell(4);
            cell4.setCellStyle(cellStyle3);
            cell4.setCellValue(29.5);


            // 钱银格局化
            HSSFCellStyle cellStyle4 = workbook.createCellStyle();
            HSSFFont font = workbook.createFont();
            font.setFontName("华文行楷");
            fo阮忠元与黄家驹对比照nt.setFontHeightInPoints((short)15);
            font.setColor(HSSFColor.RED.index);
            cellStyle4.setFont(font);

            HSSFCell cell5 = row1.createCell(5);
            cell5.setCellFormula("D2*E2"); // 设置核算公式

            // 获取核算公式的值
            HSSFFormulaEvaluator e = new HSS一号平台时时彩-Apache POI运用详解(看完这篇基本上能敷衍工作中常用的excel)FFormulaEvaluator(workbook);
            cell5 = e.evaluateInCell(cell5);
            System.out.println(cell5.getNumericCellValue());

            workbook.setActiveSheet(0);
            workbook.write(outputStream);
            outputStream.close();
            }

            示例2:读取Excel,解析数据

            public static一号平台时时彩-Apache POI运用详解(看完这篇基本上能敷衍工作中常用的excel) void readExcel() throws IOException{
            FileSystemView fsv = FileSystemView.getFileSystemView();
            String desktop = fsv.getHomeDirectory().getPath();
            String filePath = desktop + "/template.xls";

            FileInputStream fileInputStream = new FileInputStream(filePath);
            BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
            POIFSFileSystem fileSystem = new POIFSFileSystem(bufferedInputStream);
            HSSFWorkbook workbook = new HSSFWorkbook(fileSystem);
            HSSFSheet sheet = workbook.getSheet("Sheet1");

            int lastRowIndex = sheet.getLastRowNum();
            System.out.println(lastRowIndex);
            for (int i = 0; i <= lastRowIndex; i++) {
            HSSFRow row = sheet.getRow(i);
            if (row == null) { break; }

            short lastCellNum = row.getLastCellNum();
            for (int j = 0; j < lastCellNum; j++) {
            String cellValue = row.getCell(j).getStringCellValue();
            System.out.println(cellValue);
            }
            }


            bufferedInputStream.close();
            }

            四:Java Web 中导出和导入Excel

            1、导出示例

            @SuppressWarnings("resource")
            @RequestMapping("/export")
            public void exportExcel(HttpServletResponse response, HttpSession session, String name) throws Exception {

            String[] tableHeaders = {"id", "名字", "年纪"};

            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = workbook.createSheet("Sheet1");
            HSSFCellStyle cellStyle = workbook.createCellStyle();
            cellStyle.setAlignment(HorizontalAlignment.CENTER);
            cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

            Font font = workbook.createFont();
            font.setColor(HSSFColor.RED.index);
            font.setBold(true);
            cellStyle.setFont(font);

            // 将榜首行的三个单元格给兼并
            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));
            HSSFRow row = sheet.createRow(0);
            HSSFCell beginCell = row.createCell(0);
            beginCell.setCellValue("通讯录");
            beginCell.setCellStyle(cellStyle);

            row = sheet.createRow(1);
            // 创立表头
            for (int i = 0; i < tableHeaders.length; i++) {
            HSSFCell cell = row.createCell(i);
            cell.setCellValue(tableHeaders[i]);
            cell.setCellStyle(cellStyle);
            }

            List users = new ArrayList<>();
            users.add(new User(1L, "张三", 20));
            users.add(new User(2L, "李四", 21));
            users.add(new User(3L, "王五", 22));

            for (int i = 0; i < users.size(); i++) {
            row = sheet.createRow(i + 2);

            User user = users.get(i);
            row.createCell(0).setCellValue(user.getId());
            row.createCell(1).setCellValue(user.getName());
            row.createCell(2).setCellValue(user.getAge());
            }

            OutputStream outputStream = response.getOutputStream();
            response.reset();
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-disposition", "attachment;filename=template.xls");
            workbook.write(outputStream);
            outputStream.flush();
            outputStream.close();
            }

            2、导入示例

            1、运用SpringMVC上传文件,需求用到commons-fileupload


            commons-fileupload
            commons-fileupload
            1.3

            2、需求在spring的装备文件中装备一下multipartResolver


            class="org.springframework.web.multipart.commons.CommonsMultipartResolver">


            3、index.jsp

            导出 





            4、解析上传的.xls文件

            @SuppressWarnings("resource")
            @RequestMapping("/import")
            public void importExcel(@RequestParam("file") MultipartFile file) throws Exception{
            InputStream inputStream = file.getInputStream();
            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
            POIFSFileSystem fileSystem = new POIFSFileSystem(bufferedInputStream);
            HSSFWorkbook workbook = new 一号平台时时彩-Apache POI运用详解(看完这篇基本上能敷衍工作中常用的excel)HSSFWorkbook(fileSystem);
            //HSSFWorkbook workbook = new HSSFWorkbook(file.getInputStream());
            HSSFSheet sheet = workbook.getSheetAt(0);

            int lastRowNum = sheet.getLastRowNum();
            for (int i = 2; i <= lastRowNum; i++) {
            HSSFRow row = sheet.getRow(i);
            int id = (int) row.getCell(0).getNumericCellValue();
            String name = row.getCell(1).getStringCellValue();
            int age = (int) row.getCell(2).getNumericCellValue();

            System.out.println(id + "-" + name + "-" + age);
            }
            }

            导出作用:

            导入作用:

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP