使用Java生成xlsx文件到本地
本文将介绍如何使用Java生成xlsx文件并保存到本地。xlsx是一种常见的电子表格文件格式,可以在Microsoft Excel和其他电子表格软件中打开和编辑。
准备工作
在开始之前,确保你已经安装了Java开发环境(JDK)并配置好了环境变量。我们将使用Apache POI库来生成xlsx文件,因此需要将其添加到项目的依赖中。
在Maven项目中,可以通过在pom.xml文件中添加以下依赖来引入Apache POI库:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
如果你是使用其他构建工具,可以根据对应的方式引入Apache POI库。
生成xlsx文件
首先,我们需要创建一个xlsx文件并添加数据。以下是一个简单的示例代码:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class XlsxGenerator {
public static void main(String[] args) {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 创建标题行
Row headerRow = sheet.createRow(0);
Cell headerCell = headerRow.createCell(0);
headerCell.setCellValue("姓名");
// 创建数据行
Row dataRow = sheet.createRow(1);
Cell dataCell = dataRow.createCell(0);
dataCell.setCellValue("张三");
// 保存xlsx文件
try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
workbook.write(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代码中,我们首先创建了一个Workbook
对象,这是xlsx文件的顶层容器。然后,我们使用createSheet
方法创建了一个名为"Sheet1"的工作表。
接下来,我们创建了标题行和数据行。通过调用createRow
方法创建行对象,然后通过调用createCell
方法创建单元格对象,并使用setCellValue
方法设置单元格的值。
最后,我们使用FileOutputStream
将Workbook
对象写入到一个文件中,文件名为"output.xlsx"。注意,我们使用了try-with-resources语句来自动关闭输出流。
结果展示
运行上面的代码后,将在项目的根目录下生成一个名为"output.xlsx"的文件。你可以使用Excel或其他电子表格软件打开这个文件,看到其中包含了一个工作表和数据。
使用饼状图
在生成的xlsx文件中添加饼状图,可以更直观地展示数据。Apache POI库提供了创建饼状图的功能。
以下是一个示例代码,演示如何在xlsx文件中添加饼状图:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFChart;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.charts.*;
import org.apache.poi.xssf.usermodel.charts.XSSFChartDataFactory;
import org.apache.poi.xssf.usermodel.charts.XSSFChartLegend;
import org.apache.poi.xssf.usermodel.charts.XSSFChartAxis;
import java.io.FileOutputStream;
import java.io.IOException;
public class XlsxGeneratorWithChart {
public static void main(String[] args) {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 创建数据行
Row dataRow = sheet.createRow(1);
Cell dataCell1 = dataRow.createCell(0);
Cell dataCell2 = dataRow.createCell(1);
dataCell1.setCellValue("苹果");
dataCell2.setCellValue("香蕉");
// 创建饼状图
XSSFDrawing drawing = (XSSFDrawing) sheet.createDrawingPatriarch();
XSSFClientAnchor anchor = drawing.createAnchor(0, 0, 0, 0, 2, 1, 8, 15);
XSSFChart chart = drawing.createChart(anchor);
XSSFChartLegend legend = chart.getOrCreateLegend();
legend.setPosition(LegendPosition.BOTTOM);
PieChartData data = XSSFChartDataFactory.createPieChartData(sheet, anchor);
ChartDataSource<Number> categories = DataSources.fromNumericCellRange(sheet, new CellRangeAddress(1, 1, 0, 1));
ChartDataSource<Number> values = DataSources