我有一个二维数组,想通过java代码写入一个excel文件单元格区域中,并支持导出xlsx文件。
应该如何实现?
你可以使用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"); //写入文件 }}
首先,你需要添加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; 问题答案: