将包含 \n 和 \t 的 Json 响应存储在 Java 的二维数组中,并使用 POI 写入 Excel

Storing a Json response containing \n and \t in a 2 dimentional array in Java and write to Excel using POI

我收到一个 JSON 响应作为一个单独的字符串,如下所示。这个字符串应该被提取到一个二维数组中。

  1. 无论 \t 出现在 response 中的什么地方,它都必须位于当前行的新单元格中
  2. 无论 \n 出现在哪里,它都必须增加行号并写入新行
  3. 使用 Apache POI 在 excel 中写入数组列表。

响应:

"type": "TABLE",
"data": "Col_1\tCol_2\tCol_3\nName_1\tPlace_1\tAnimal_1\nName_2\tPlace_2\tAnimal_2\nName_3\tPlace_3\tAnimal_3\n"

您需要使用 \n 拆分您的响应,它成为 excel 中的行,然后使用 \t 从行拆分成为列值。

import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ApachePOIExcelWrite {

  public static void main(String[] args) throws IOException {
    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet sheet = workbook.createSheet("Java Books");

    String response =
        "Col_1\tCol_2\tCol_3\nName_1\tPlace_1\tAnimal_1\nName_2\tPlace_2\tAnimal_2\nName_3\tPlace_3\tAnimal_3\n";

    int rowCount = 0;

    String rows[] = response.split("\n");
    for (String rowInfo : rows) {
      Row row = sheet.createRow(++rowCount);

      int columnCount = 0;
      String[] colInfo = rowInfo.split("\t");
      for (String column : colInfo) {
        Cell cell = row.createCell(++columnCount);
        cell.setCellValue(column);
      }

    }

    try (FileOutputStream outputStream = new FileOutputStream("JavaBooks.xlsx")) {
      workbook.write(outputStream);
    }
  }
}

输出: