当前位置: 首页 > 知识库问答 >
问题:

java - 如何将二维数组写入Excel?

孙熠彤
2023-11-22

我有一个二维数组,想通过java代码写入一个excel文件单元格区域中,并支持导出xlsx文件。

应该如何实现?

共有2个答案

扈韬
2023-11-22

你可以使用java Excel 相关的第三方组件实现
引入Maven依赖:

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

Java将数据写入Excel,把这个方法封装了WriteToExcel

import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List; public class WriteToExcel {     private static XSSFWorkbook workbook;    private static XSSFSheet sheet;    private static XSSFRow row;    private static XSSFCell cell;    private static File file;     //创建sheet页    public static void setSheet(String sheetName) {        workbook = new XSSFWorkbook();        sheet = workbook.createSheet(sheetName);    }    //创建表头    public static void createHead(List<String> headList) {        //创建表头,也就是第一行        row = sheet.createRow(0);        for (int i = 0; i < headList.size(); i++) {            cell = row.createCell(i);            cell.setCellValue(headList.get(i));        }    }    //创建表内容    public static void createContent(List<List<String>> contentList) {        //创建表内容,从第二行开始        for (int i = 0; i < contentList.size(); i++) {            row = sheet.createRow(i + 1);            for (int j = 0; j < contentList.get(i).size(); j++) {                row.createCell(j).setCellValue(contentList.get(i).get(j));            }        }    }    //写入文件    public static void writeToFile(String filePath){        file = new File(filePath);        //将文件保存到指定的位置        try {            workbook.write(new FileOutputStream(file));            System.out.println("写入成功");            workbook.close();        } catch (IOException e) {            e.printStackTrace();        }    }    // 内容测试数据    protected static List<List<String>> getContent() {        List<List<String>> contentList = new ArrayList<>();        List<String> content1 = new ArrayList<>();        content1.add("张三");        content1.add("18");        List<String> content2 = new ArrayList<>();        content2.add("李四");        content2.add("20");        contentList.add(content1);        contentList.add(content2);        return contentList;    }        public static void main(String[] args) {        //表头测试数据        List<String> headList = new ArrayList<>();        headList.add("昵称");        headList.add("年龄");        List<List<String>> contentList = getContent();//内容测试数据        setSheet("WorkSheet");                        //创建sheet页        createHead(headList);                         //设置表头        createContent(contentList);                   //设置内容        writeToFile("D://work.xls");         //写入文件    }}
巫马昆琦
2023-11-22

看看github copilot 怎么说的

首先,你需要添加Apache POI库到你的项目中。如果你使用Maven,你可以在pom.xml文件中添加以下依赖:

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

然后,你可以使用以下代码将二维数组写入Excel文件:

import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileOutputStream;import java.io.IOException;public class ExcelWriter {    public void writeToExcel(String[][] data, String filePath) {        Workbook workbook = new XSSFWorkbook();        Sheet sheet = workbook.createSheet("Sheet1");        for (int i = 0; i < data.length; i++) {            Row row = sheet.createRow(i);            for (int j = 0; j < data[i].length; j++) {                Cell cell = row.createCell(j);                cell.setCellValue(data[i][j]);            }        }        try (FileOutputStream outputStream = new FileOutputStream(filePath)) {            workbook.write(outputStream);        } catch (IOException e) {            e.printStackTrace();        }    }}

在这段代码中,我们首先创建了一个新的XSSFWorkbook对象,然后在工作簿中创建了一个新的工作表。然后,我们遍历二维数组,为每个数据元素创建一个新的单元格,并将数据写入单元格。最后,我们将工作簿写入文件。

你可以通过以下方式调用这个方法:

String[][] data = {    {"A1", "B1", "C1"},    {"A2", "B2", "C2"},    {"A3", "B3", "C3"}};new ExcelWriter().writeToExcel(data, "path_to_your_file.xlsx");

请将"path_to_your_file.xlsx"替换为你想要保存的文件路径。

 类似资料:
  • 我刚接触Python。当我试图将一个2维数组插入到一个3D数组中时,我得到了这样一个错误: 下面是我的代码: 目的是创建一个队列,其中的表[0]总是最新的元素(一个2D数组),而最旧的元素将弹出。 谁知道我怎么解决这个?多谢!

  • 问题内容: 我已经有了用于将一维二维转换为一维二维的代码,但是我不知道如何将其转换。这是我的代码: 问题答案: 您正在寻找类似的东西: 与以下内容相同: 但试图帮助进一步解释这个概念。

  • 问题内容: 在另一个问题中,如果我可以提供遇到问题的阵列,其他用户会提供一些帮助。但是,我什至无法完成基本的I / O任务,例如将数组写入文件。 谁能解释我需要向文件写入4x11x14 numpy数组的哪种循环? 该数组由四个11 x 14数组组成,因此我应该使用漂亮的换行符对其进行格式化,以使文件读取更加容易。 编辑 :所以我已经尝试了numpy.savetxt函数。奇怪的是,它给出了以下错误:

  • 问题内容: 我一直在尝试将数组写入文件。我知道如何将整数或字符串写入文件,但是要带一个数组会使我感到困惑。我现在正在使用这个: 问题答案: 就像其他人说的那样,您可以循环遍历数组并逐个打印出元素。为了使输出显示为数字而不是您看到的“字母和符号”,您需要将每个元素转换为字符串。因此,您的代码将如下所示: 如果您只想打印类似的数组,则可以使用此衬纸替换循环:

  • 主要内容:创建二维数组,初始化二维数组,获取单个元素,获取全部元素,获取整行元素,获取整列元素为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在 Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是

  • 问题内容: 我想发送多个随机值。我认为数组是发送它们的最佳方法。但是我不知道如何向Socket写一个数组? 我的Java课: 导入java.io.ByteArrayOutputStream; 导入java.io.IOException; 导入java.io.InputStream; 导入java.net.Socket; 导入java.io. *; 导入java.util.Random; 问题答案: