21xrx.com
2025-03-23 05:47:53 Sunday
文章检索 我的文章 写文章
JavaExcel解析:实现数据读取与写入
2023-06-17 03:04:39 深夜i     --     --
Java Excel 解析

Java是一种非常优秀的编程语言,也因此被广泛应用于各种场合。在涉及到数据处理的情形下,其中涉及到Excel文件的操作是非常常见的需求。本文将详细介绍如何使用Java来解析Excel文件,实现数据读取与写入。

1. Excel文件的读取

在Java中,Excel文件的读取通常是通过使用Apache的POI库来实现的,具体的代码实现如下:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
public class ExcelReader {
  public static List
  > readExcel(String filename) throws IOException { 
       List
       > result = new ArrayList<>(); 
            try(InputStream in = new FileInputStream(filename)) {
              Workbook workbook = new XSSFWorkbook(in);
              Sheet sheet = workbook.getSheetAt(0);
              DecimalFormat decimalFormat = new DecimalFormat("#.#");
              for(Row row : sheet) {
                List rowList = new ArrayList<>(); 
                  for(Cell cell : row) {
                    switch(cell.getCellTypeEnum()) {
                      case STRING:
                        rowList.add(cell.getStringCellValue());
                        break;
                      case NUMERIC:
                        rowList.add(decimalFormat.format(cell.getNumericCellValue()));
                        break;
                      default:
                        rowList.add("");
                        break;
                    }
                  }
                  result.add(rowList);
                }
              }
              return result;
            }
          }
          上述代码中,我们编写了一个名为ExcelReader的类,其中的readExcel方法用来读取Excel文件并返回结果。在实现中,我们使用了List来存储每一行的数据,在循环读取每一行时,使用了内嵌的循环遍历每一格中的数据,最后将每一行的数据存入了List中,并将其添加到了结果集中。
          2. Excel文件的写入
          Excel文件的写入通常也是通过使用Apache的POI库来实现的,具体的代码实现如下:
          
        import org.apache.poi.ss.usermodel.*;
        import org.apache.poi.xssf.usermodel.XSSFWorkbook;
        import java.io.FileOutputStream;
        import java.io.IOException;
        import java.io.OutputStream;
        import java.util.List;
        public class ExcelWriter {
          public static void writeExcel(String filename, List
          > data) throws IOException { 
               try(OutputStream out = new FileOutputStream(filename)) {
                 Workbook workbook = new XSSFWorkbook();
                 Sheet sheet = workbook.createSheet();
                 int rowIndex = 0;
                 for(List rowData : data) { 
                         Row row = sheet.createRow(rowIndex++);
                         int cellIndex = 0;
                         for(Object obj : rowData) {
                           Cell cell = row.createCell(cellIndex++);
                           if(obj instanceof String) {
                             cell.setCellValue((String)obj);
                           }
                           else if(obj instanceof Double) {
                             cell.setCellValue((Double)obj);
                           }
                           else if(obj instanceof Integer) {
                             cell.setCellValue((Integer)obj);
                           }
                         }
                       }
                       workbook.write(out);
                     }
                   }
                 }
                 上述代码中,我们同样编写了一个名为ExcelWriter的类,其中的writeExcel方法用来写入数据到Excel文件中。其中,我们使用了List作为数据的存储结构,在循环写入每一行时,同样使用了内嵌的循环遍历每一格中的数据,并使用了Cell的set方法将数据写入到单元格中,最后将数据写入到OutputStream中来生成Excel文件。
                 3. 关键词
                 Java、Excel、解析
  
  

评论区