java 数据导出为Excel表格

本文介绍如何使用jxl和Apache POI两种库来读取和写入Excel文件。通过具体示例代码展示了创建、填充数据到Excel表格及从Excel中提取数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种:jxl.jar
读取Excel表:

    public void readWorkBook() {
        //用来存整个表
        List<List<String>> list = new ArrayList<List<String>>();
        //用来存一行
        List<String> rowList = null;
        //用来存一个格子的内容
        String cellContent = null;
        try {
            //新建文件输入流
            InputStream inputStream = new FileInputStream(new java.io.File("C:\\Users\\LWR\\Desktop\\工作簿.xls"));
            //获得读取工作簿对象
            Workbook workbook = Workbook.getWorkbook(inputStream);
            //获取工作表
            Sheet sheet = workbook.getSheet(0);
            //获取工作表列数
            int columns = sheet.getColumns();
            //获取工作表行数
            int rows = sheet.getRows();
            //遍历读取表格内容
            for (int i = 0; i < rows; i++) {
                rowList = new ArrayList<String>();
                for (int j = 0; j < columns; j++) {
                    //j列i行的格子内容
                    cellContent = sheet.getCell(j, i).getContents();
                    rowList.add(cellContent);
                }
                list.add(i, rowList);
            }
            //遍历输出读取的内容
            for (List<String> row : list) {
                for (String col : row) {
                    System.out.print(col+"\t\t");
                }
                System.out.println();
            }
        } catch (FileNotFoundException e) {
            System.out.println("找不到读取的文件\n" + e);
        } catch (BiffException e) {
            System.out.println("读取的文件有问题\n" + e);
        } catch (IOException e) {
            System.out.println("输入流出错\n" + e);
        }
    }

写入Excel表:

    public void createWorkBook(List<List<String>> list) {
        OutputStream outputStream = null;
        try {
            File file = new File("C:\\Users\\LWR\\Desktop\\工作簿1.xls");
            if (!file.exists()) {
                file.createNewFile();
            }
            outputStream = new FileOutputStream(file);
            WritableWorkbook writableWorkbook = Workbook.createWorkbook(outputStream);
            WritableSheet writableSheet = writableWorkbook.createSheet("sheet_1", 0);

//          WritableFont font = new WritableFont(WritableFont.TAHOMA, 9, WritableFont.BOLD);// 定义字体  
//          font.setColour(Colour.RED);// 字体颜色  
//          WritableCellFormat wc = new WritableCellFormat(font);  
//          wc.setAlignment(Alignment.RIGHT); // 设置左对齐  
//          wc.setBorder(Border.ALL, BorderLineStyle.THIN); // 设置边框线  
//          wc.setBackground(jxl.format.Colour.YELLOW); // 设置单元格的背景颜色

            for (int i = 0; i < list.size(); i++) {
                List<String> list2 = list.get(i);
                for (int j = 0; j < list2.size(); j++) {
                    writableSheet.addCell(new Label(j, i, list2.get(j)));
                }
            }
            writableWorkbook.write();
            writableWorkbook.close();
        } catch (FileNotFoundException e) {
            System.out.println("找不到读取的文件\n" + e);
        } catch (IOException e) {
            System.out.println("输出流出错\n" + e);
        } catch (RowsExceededException e) {
            System.out.println("行越界");
        } catch (WriteException e) {
            System.out.println("写入错误");
        } finally {
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

第二种:POI
这是简单的读写,样式设置自己添加:

把数据写入Excel表格API:

    public void exportExcel(List<List<String>> list) {

        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
        HSSFSheet hssfSheet = hssfWorkbook.createSheet();
        HSSFRow hssfRow = hssfSheet.createRow(0);
        HSSFCell hssfCell = hssfRow.createCell(0);
        hssfCell.setCellValue(new HSSFRichTextString("第一列"));
        hssfCell = hssfRow.createCell(1);
        hssfCell.setCellValue(new HSSFRichTextString("第二列"));
        hssfCell = hssfRow.createCell(2);
        hssfCell.setCellValue(new HSSFRichTextString("第三列"));
        hssfCell = hssfRow.createCell(3);
        hssfCell.setCellValue(new HSSFRichTextString("第四列"));
        for (int i = 0; i < list.size(); i++) {
            hssfRow = hssfSheet.createRow(i + 1);
            List<String> list2 = list.get(i);
            for (int j = 0; j < list2.size(); j++) {
                hssfCell = hssfRow.createCell(j);
                hssfCell.setCellValue(new HSSFRichTextString(list2.get(j)));
            }
        }
        try {
            File file = new File("C:\\Users\\LWR\\Desktop\\工作簿1.xls");
            if (!file.exists()) {
                file.createNewFile();
            }
            OutputStream outputStream = null;
            outputStream = new FileOutputStream(file);
            hssfWorkbook.write(outputStream);
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

导入Excel表格数据:
一种是用循坏一行一列取值,另一种是用迭代器:

    public static void importExcel() {
        // 用来存整个表
        List<List<String>> list = new ArrayList<List<String>>();
        // 用来存一行
        List<String> rowList = null;
        // 用来存一个格子的内容
        InputStream inputStream = null;
        try {
            // 新建文件输入流
            inputStream = new FileInputStream(new File("C:\\Users\\LWR\\Desktop\\工作簿.xls"));
            POIFSFileSystem poifsFileSystem = new POIFSFileSystem(inputStream);
            HSSFWorkbook hssfWorkbook = new HSSFWorkbook(poifsFileSystem);
            HSSFSheet sheet = hssfWorkbook.getSheetAt(0);
            Iterator rowIterator = sheet.rowIterator();
            while (rowIterator.hasNext()) {
                rowList = new ArrayList<String>();
                HSSFRow row = (HSSFRow) rowIterator.next();
                Iterator cellIterator = row.cellIterator();
                while (cellIterator.hasNext()) {
                    HSSFCell cell = (HSSFCell) cellIterator.next();
                    rowList.add(cell.getStringCellValue());
                }
                list.add(rowList);
            }
            // // 获取行数
            // int rowNum = sheet.getLastRowNum();
            // // 获取一行
            // HSSFRow hssfRow = sheet.getRow(1);
            // // 获取一个格子
            // HSSFCell cell = hssfRow.getCell(0);
            // // 获取值
            // String content = cell.getStringCellValue();
        } catch (IOException e) {

        }
        // 遍历输出读取的内容
        for (List<String> row : list) {
            for (String col : row) {
                System.out.print(col + "\t\t");
            }
            System.out.println();
        }
    }
}
要将Java中的数据导出Excel表格,你可以使用Apache POI库。以下是一个简单的示例代码,演示如何使用POI库将数据导出Excel文件: 首先,确保你已经在项目中添加了Apache POI的相关依赖。 ```java import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; public class ExcelExporter { public static void exportData(List<List<String>> data, String filePath) { try (Workbook workbook = new XSSFWorkbook()) { Sheet sheet = workbook.createSheet("Sheet1"); // 遍历数据列表,逐行写入Excel int rowIndex = 0; for (List<String> rowData : data) { Row row = sheet.createRow(rowIndex++); int cellIndex = 0; for (String cellData : rowData) { Cell cell = row.createCell(cellIndex++); cell.setCellValue(cellData); } } // 将Workbook保存为Excel文件 try (FileOutputStream outputStream = new FileOutputStream(filePath)) { workbook.write(outputStream); } } catch (IOException e) { e.printStackTrace(); } } } ``` 使用示例: ```java import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { List<List<String>> data = new ArrayList<>(); // 添加数据 List<String> row1 = new ArrayList<>(); row1.add("姓名"); row1.add("年龄"); data.add(row1); List<String> row2 = new ArrayList<>(); row2.add("张三"); row2.add("25"); data.add(row2); List<String> row3 = new ArrayList<>(); row3.add("李四"); row3.add("30"); data.add(row3); // 导出数据Excel文件 String filePath = "path/to/output.xlsx"; ExcelExporter.exportData(data, filePath); } } ``` 在这个示例中,我们定义了一个ExcelExporter类,其中的exportData方法接收一个包含数据的二维列表和文件路径作为参数。该方法使用POI库创建一个Workbook对象,并在其中创建一个Sheet对象。然后,遍历数据列表,逐行逐列地将数据写入Excel中。最后,将Workbook保存为指定的Excel文件。 你可以根据需要自定义数据和文件路径,将数据导出Excel表格
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值