POI操作Excel详解

一、POI操作Excel方法

POI(Poor Obfuscation Implementation)是一个用于处理Microsoft Office文档的Java API。在处理Excel中的数据时,POI受到广泛应用,以下是POI操作Excel的基本方法:

File file = new File("example.xlsx");
Workbook workbook = WorkbookFactory.create(file); // 读取Excel文件

Sheet sheet = workbook.getSheetAt(0); // 获取第一个sheet

Row row = sheet.getRow(0); // 获取第一行

Cell cell = row.getCell(0); // 获取第一个单元格

cell.setCellValue("Hello World"); // 设置第一个单元格内容

FileOutputStream out = new FileOutputStream(file); // 创建输出流

workbook.write(out); // 将数据写入Excel文件

out.close(); // 关闭输出流

以上代码实现了使用POI读取Excel文件、获取单元格并设置单元格内容,最后将修改后的数据写入Excel文件。

二、POI操作Excel单元格样式丢失

在使用POI进行Excel操作时,有时会遇到单元格样式丢失的问题,下面是解决这个问题的方法:

Cell cell = row.getCell(0);
CellStyle style = cell.getCellStyle(); // 获取单元格样式

cell = row.createCell(0); // 创建新单元格
cell.setCellValue("Hello World"); // 设置单元格内容
cell.setCellStyle(style); // 设置单元格样式

以上代码获取了单元格的样式,然后在创建新的单元格时将样式设置为旧单元格的样式,解决了单元格样式丢失的问题。

三、POI操作Excel导入数据库

在对Excel数据进行处理后,有时需要将数据导入数据库进行后续操作,以下是将POI解析出的Excel数据导入MySQL数据库的示例代码:

File file = new File("example.xlsx");
Workbook workbook = WorkbookFactory.create(file); // 读取Excel文件
Sheet sheet = workbook.getSheetAt(0); // 获取第一个sheet

Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password");
Statement stmt = conn.createStatement();
stmt.executeUpdate("CREATE TABLE IF NOT EXISTS example (id INT PRIMARY KEY, name VARCHAR(20))");

String sql = "INSERT INTO example (id, name) VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);

for (Row row : sheet) {
    if (row.getRowNum() == 0) {
        continue;
    }
    pstmt.setInt(1, (int) row.getCell(0).getNumericCellValue());
    pstmt.setString(2, row.getCell(1).getStringCellValue());
    pstmt.executeUpdate();
}

pstmt.close();
stmt.close();
conn.close();

以上代码首先连接数据库并创建表,之后遍历Excel数据并将数据插入到数据库中。

四、POI操作Excel表格合并行

有时需要将相邻单元格合并为一行,以下是合并表格行的示例代码:

Sheet sheet = workbook.getSheetAt(0);

CellRangeAddress region = new CellRangeAddress(0, 2, 0, 0); // 合并第1列从第1行到第3行的单元格
sheet.addMergedRegion(region);

以上代码将单元格从第1行到第3行的第1列合并为一行。

五、POI操作Excel读取第一列

有时需要读取Excel表格中的特定列,以下是读取第一列的示例代码:

Sheet sheet = workbook.getSheetAt(0);

for (Row row : sheet) {
    Cell cell = row.getCell(0);
    if (cell != null) {
        System.out.println(cell.getStringCellValue());
    }
}

以上代码遍历第一个sheet的所有行并读取第一列的数据。

六、POI操作Excel基础用法详解

在使用POI进行Excel操作时,还有一些基础用法需要了解:

  • Workbook:代表整个Excel文档,可以通过WorkbookFactory来创建。
  • Sheet:代表Excel文档中的一个sheet。
  • Row:代表一个sheet中的一行。
  • Cell:代表一行中的一个单元格。
  • CellStyle:代表单元格样式。

其他一些常用的方法包括:

  • setColumnWidth(int columnIndex, int width):设置列宽。
  • getFont(int fontIndex):获取字体。
  • setBorderBottom(BorderStyle border):设置边框样式。
  • setFillForegroundColor(short bgColor):设置填充颜色。

七、POCO操作

POCO(Plain Old CLR Object)是面向对象编程的一种方式,以下是使用POCO操作Excel的示例代码:

@Data // lombok注解,自动生成getter、setter方法等代码
public class Person {
    @ExcelProperty(value = {"用户id"}, index = 0) // easyexcel注解,设置Excel中的列名和顺序
    private Long id;

    @ExcelProperty(value = {"用户名"}, index = 1)
    private String username;

    @ExcelProperty(value = {"状态"}, index = 2)
    private Integer status;
}

File file = new File("example.xlsx");
EasyExcel.read(file, Person.class, new ReadListener<Person>() {
    // 实现方法
}).sheet().doRead();

以上代码使用EasyExcel库实现了使用POCO读取Excel数据,将Excel中的数据映射到Person类。

八、POI操作PPT

除了Excel,POI也可以用于操作PowerPoint文档,以下是POI操作PPT的示例代码:

File file = new File("example.pptx");
XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(file)); // 读取PPT文件
XSLFSlide slide = ppt.createSlide(); // 创建新slide

XSLFTextBox box = slide.createTextBox(); // 创建文本框
box.setAnchor(new Rectangle(50, 50, 300, 100)); // 设置文本框大小和位置
box.setText("Hello World!"); // 设置文本框内容

FileOutputStream out = new FileOutputStream(file); // 创建输出流
ppt.write(out); // 将修改后的数据写入PPT文件
out.close(); // 关闭输出流

以上代码实现了使用POI读取PPT文件,创建新的slide,添加文本框并设置内容,最后将修改后的数据写入PPT文件。

九、POI操作DOC

POI也可以用于对Word文档进行操作,以下是POI操作DOC的示例代码:

File file = new File("example.docx");
XWPFDocument doc = new XWPFDocument(new FileInputStream(file)); // 读取DOC文件

XWPFParagraph para = doc.createParagraph(); // 创建新段落
XWPFRun run = para.createRun(); // 创建run
run.setText("Hello World!"); // 设置文本内容

FileOutputStream out = new FileOutputStream(file); // 创建输出流
doc.write(out); // 将修改后的数据写入DOC文件
out.close(); // 关闭输出流

以上代码实现了使用POI读取Word文档,创建新段落,添加run并设置内容,最后将修改后的数据写入Word文档。

十、POI操作PDF

POI也可以用于对PDF文档进行操作,以下是POI操作PDF的示例代码:

File file = new File("example.pdf");
PDDocument doc = PDDocument.load(file); // 读取PDF文件

PDPage page = doc.getPage(0); // 获取第一页

PDPageContentStream contentStream = new PDPageContentStream(doc, page);
contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12); // 设置字体和字号
contentStream.beginText(); // 开始文本操作
contentStream.newLineAtOffset(100, 700); // 设置文本起始位置
contentStream.showText("Hello World!"); // 显示文本
contentStream.endText(); // 结束文本操作
contentStream.close(); // 关闭contentStream

doc.save(file); // 将修改后的数据写入PDF文件
doc.close(); // 关闭doc

以上代码实现了使用POI读取PDF文件,获取第一页并添加文本,最后将修改后的数据写入PDF文件。

原创文章,作者:LPZW,如若转载,请注明出处:https://www.506064.com/n/147884.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
LPZWLPZW
上一篇 2024-11-02 13:13
下一篇 2024-11-02 13:13

相关推荐

  • Python栈操作用法介绍

    如果你是一位Python开发工程师,那么你必须掌握Python中的栈操作。在Python中,栈是一个容器,提供后进先出(LIFO)的原则。这篇文章将通过多个方面详细地阐述Pytho…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • Python磁盘操作全方位解析

    本篇文章将从多个方面对Python磁盘操作进行详细阐述,包括文件读写、文件夹创建、删除、文件搜索与遍历、文件重命名、移动、复制、文件权限修改等常用操作。 一、文件读写操作 文件读写…

    编程 2025-04-29
  • Python代码实现回文数最少操作次数

    本文将介绍如何使用Python解决一道经典的回文数问题:给定一个数n,按照一定规则对它进行若干次操作,使得n成为回文数,求最少的操作次数。 一、问题分析 首先,我们需要了解回文数的…

    编程 2025-04-29
  • 为什么不能用Microsoft Excel进行Python编程?

    Microsoft Excel是一个广泛使用的数据分析工具,但是它不能直接用于Python编程。这是因为Microsoft Excel并不是一个编程工具,它的主要功能是进行数据处理…

    编程 2025-04-29
  • Python元祖操作用法介绍

    本文将从多个方面对Python元祖的操作进行详细阐述。包括:元祖定义及初始化、元祖遍历、元祖切片、元祖合并及比较、元祖解包等内容。 一、元祖定义及初始化 元祖在Python中属于序…

    编程 2025-04-29
  • Python列表的读写操作

    本文将针对Python列表的读取与写入操作进行详细的阐述,包括列表的基本操作、列表的增删改查、列表切片、列表排序、列表反转、列表拼接、列表复制等操作。 一、列表的基本操作 列表是P…

    编程 2025-04-29
  • 如何用Python对数据进行离散化操作

    数据离散化是指将连续的数据转化为离散的数据,一般是用于数据挖掘和数据分析中,可以帮助我们更好的理解数据,从而更好地进行决策和分析。Python作为一种高效的编程语言,在数据处理和分…

    编程 2025-04-29
  • Python序列的常用操作

    Python序列是程序中的重要工具,在数据分析、机器学习、图像处理等很多领域都有广泛的应用。Python序列分为三种:列表(list)、元组(tuple)和字符串(string)。…

    编程 2025-04-28

发表回复

登录后才能评论