21xrx.com
2024-12-22 23:02:30 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、解析

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复