• 通过poi的XSSF实现生成excel文件


    maven导入依赖jar包:

            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.6</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.6</version>
            </dependency>

    java代码:

    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.poi.hssf.util.HSSFColor;
    import org.apache.poi.ss.usermodel.CellStyle;
    import org.apache.poi.ss.usermodel.Font;
    import org.apache.poi.ss.usermodel.IndexedColors;
    import org.apache.poi.xssf.usermodel.XSSFCell;
    import org.apache.poi.xssf.usermodel.XSSFCellStyle;
    import org.apache.poi.xssf.usermodel.XSSFFont;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    public class Demo {
    
        public static void main(String[] args) {
            // 文件内容
            List<Object[]> rows = new ArrayList<Object[]>();
            rows.add(new String[] { "编号", "姓名", "成绩" });
            rows.add(new Object[] { 1001, "张三", 87.5F });
            rows.add(new Object[] { 1002, "李四", 99.5F });
            rows.add(new Object[] { 1003, "王五", null });
            rows.add(new Object[] { 1004, "小六", 59F });
    
            // 文件路径
            String folderPath = "E:\tmp";
    
            // 文件名称
            String fileName = "学生分数";
    
            // 生成文件
            new Demo().createExcelFile(rows, folderPath, fileName);
        }
    
        /**
         * 根据[文件内容&文件路径&文件名称],生成一个excel文件
         */
        private void createExcelFile(List<Object[]> rows, String folderPath, String fileName) {
            try {
                // 创建一个Workbook
                XSSFWorkbook wb = new XSSFWorkbook();
    
                // 创建一个Sheet
                XSSFSheet sheet = wb.createSheet(fileName);
    
                // 样式1:设置列宽
                sheet.setColumnWidth(0, 2000); // 第一列的宽度为2000
                sheet.setColumnWidth(1, 3000); // 第二列的宽度为3000
    
                // 样式1:设置单元格背景
                CellStyle titleStyle = wb.createCellStyle();
                titleStyle.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex());
                titleStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND);
    
                // 样式1:设置单元格边框
                titleStyle.setBorderBottom(XSSFCellStyle.BORDER_THIN); // 下边框
                titleStyle.setBorderLeft(XSSFCellStyle.BORDER_THIN);// 左边框
                titleStyle.setBorderTop(XSSFCellStyle.BORDER_THIN);// 上边框
                titleStyle.setBorderRight(XSSFCellStyle.BORDER_THIN);// 右边框
    
                // 样式1:设置单元格字体
                Font font = wb.createFont();
                // font.setColor((short) 42); // 设置字体颜色
                font.setColor(HSSFColor.GREEN.index); // XSSFColor中未找到颜色和short数值的映射,使用HSSFColor来定位颜色的short值
                font.setFontName("黑体"); // 设置字体
                font.setFontHeightInPoints((short) 12);// 设置字体大小
                font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// 粗体显示
                titleStyle.setFont(font);
    
                // 样式1:设置单元格居中
                titleStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
    
                // 样式2:设置单元格居中
                CellStyle contentStyle = wb.createCellStyle();
                contentStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
    
                // 遍历输出每行
                for (int i = 0; i < rows.size(); i++) {
                    // 创建一个row
                    XSSFRow row = sheet.createRow(i);
    
                    // 每一行的数据
                    Object[] rowData = rows.get(i);
    
                    // 遍历生成每个单元格
                    for (int j = 0; j < rowData.length; j++) {
                        // 创建一个cell
                        XSSFCell cell = row.createCell(j);
    
                        // 样式:设置单元格样式
                        if (i == 0) {
                            cell.setCellStyle(titleStyle);// 使用样式1
                        } else {
                            cell.setCellStyle(contentStyle);// 使用样式2
                        }
    
                        // 如果为空,就不做设值处理
                        if (null == rowData[j]) {
                            continue;
                        }
    
                        // 设值处理:假设只有四种类型的数据,如果还有其他类型,根据需要,做格式转换
                        // String类型数值
                        if (rowData[j].getClass() == String.class) {
                            cell.setCellValue((String) rowData[j]);
                        }
                        // double类型数值
                        else if (rowData[j].getClass() == double.class || rowData[j].getClass() == Double.class) {
                            cell.setCellValue((Double) rowData[j]);
                        }
                        // float类型数值
                        else if (rowData[j].getClass() == float.class || rowData[j].getClass() == Float.class) {
                            cell.setCellValue((Float) rowData[j]);
                        }
                        // integer类型数值
                        else if (rowData[j].getClass() == int.class || rowData[j].getClass() == Integer.class) {
                            cell.setCellValue((Integer) rowData[j]);
                        }
                    }
                }
    
                // 文件路径
                String filePath = folderPath + File.separator + fileName + ".xls";// 含文件名的全路径,如果是2007及以后的版本,后缀可用.xlsx,向前兼容
                File file = new File(filePath);
    
                // 如果父目录不存在,创建父目录
                if (!file.getParentFile().exists()) {
                    file.getParentFile().mkdirs();
                }
                // 如果已存在,删除旧文件
                if (file.exists()) {
                    file.delete();
                }
    
                // 将excel内容写入到文件当中
                file.createNewFile();
                FileOutputStream fileOut = new FileOutputStream(file);
                wb.write(fileOut);
                fileOut.close();
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    }
  • 相关阅读:
    easyui
    applicationContext.xml xxx-servlet.xml
    response ,request编码
    json 处理
    webservice wsdl 生成服务
    springmvc 定时器
    ftp命令和scp命令
    Telnet、FTP、SSH、SFTP、SCP
    mysql 索引
    民科吧 见闻录
  • 原文地址:https://www.cnblogs.com/zj0208/p/7737922.html
Copyright © 2020-2023  润新知