# xssfworkbook
# 设置列宽
在使用 XSSFWorkbook 设置 Excel 列宽时,可以通过 Sheet.setColumnWidth() 方法来设置列的宽度。下面是一个示例代码,展示如何使用 Apache POI 库的 XSSFWorkbook 设置 Excel 列宽:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class SetColumnWidthExample {
public static void main(String[] args) {
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Example Sheet");
// 设置第一列的宽度(列索引从0开始)
// 宽度单位是 1/256 个字符宽度的度量值
sheet.setColumnWidth(0, 20 * 256); // 设置列宽为20个字符宽度
// 可以继续设置其他列宽
sheet.setColumnWidth(1, 30 * 256); // 第二列宽度为30个字符
// 保存Excel文件(这里省略保存逻辑,您可以根据需要保存文件)
// FileOutputStream out = new FileOutputStream("example.xlsx");
// workbook.write(out);
// out.close();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
注意:
sheet.setColumnWidth()方法的第二个参数是以 1/256 个字符宽度为单位。例如,20 * 256表示将列宽设置为 20 个字符宽度。- 如果你希望设置列宽为自动调整内容的宽度,可以使用
sheet.autoSizeColumn(columnIndex)方法。
你可以根据需求对不同列设置不同的宽度。
# 设置背景色
在使用 Apache POI 设置 Excel 单元格的背景色时,你可以使用 CellStyle 和 XSSFColor 来实现。以下是一个设置单元格背景色的示例代码:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.awt.Color;
public class SetBackgroundColorExample {
public static void main(String[] args) {
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Example Sheet");
// 创建行
Row row = sheet.createRow(0);
// 创建单元格
Cell cell = row.createCell(0);
cell.setCellValue("Hello, World!");
// 创建单元格样式
XSSFCellStyle style = workbook.createCellStyle();
// 设置填充模式(单元格的填充方式)
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 设置背景色(使用 RGB 颜色)
XSSFColor color = new XSSFColor(new Color(255, 200, 0), null); // 橙色背景
style.setFillForegroundColor(color);
// 将样式应用到单元格
cell.setCellStyle(style);
// 保存Excel文件(这里省略保存逻辑,您可以根据需要保存文件)
// FileOutputStream out = new FileOutputStream("example.xlsx");
// workbook.write(out);
// out.close();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 代码解释:
- 创建样式 (
XSSFCellStyle):使用workbook.createCellStyle()创建单元格样式对象。 - 设置填充模式 (
FillPatternType):使用FillPatternType.SOLID_FOREGROUND,表示填充整个单元格。 - 设置背景颜色 (
XSSFColor):通过XSSFColor设置颜色,颜色可以使用java.awt.Color来定义 RGB 值。 - 应用样式:将样式设置到单元格上,使用
cell.setCellStyle(style)。
你可以修改 Color(255, 200, 0) 中的 RGB 值来改变背景色。
# 字体加粗
在使用 Apache POI 设置 Excel 单元格字体加粗时,你可以通过 Font 和 CellStyle 来实现。以下是一个示例代码,展示如何设置单元格的字体加粗:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class SetBoldFontExample {
public static void main(String[] args) {
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Example Sheet");
// 创建行
Row row = sheet.createRow(0);
// 创建单元格
Cell cell = row.createCell(0);
cell.setCellValue("Bold Text!");
// 创建单元格样式
CellStyle style = workbook.createCellStyle();
// 创建字体对象
Font font = workbook.createFont();
// 设置字体加粗
font.setBold(true);
// 将字体应用到样式
style.setFont(font);
// 将样式应用到单元格
cell.setCellStyle(style);
// 保存Excel文件(这里省略保存逻辑,您可以根据需要保存文件)
// FileOutputStream out = new FileOutputStream("example.xlsx");
// workbook.write(out);
// out.close();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 代码说明:
- 创建字体 (
Font):通过workbook.createFont()创建一个字体对象。 - 设置加粗 (
setBold(true)):通过font.setBold(true)设置字体加粗。 - 应用字体到样式 (
CellStyle.setFont()):将创建的字体应用到单元格样式。 - 设置样式到单元格 (
cell.setCellStyle()):最后将样式应用到单元格。
通过这种方式,你可以为特定的单元格设置字体加粗效果。如果需要,你还可以进一步设置字体的其他属性,例如大小、颜色等。
# 设置整行字体加粗
要设置一整行的字体加粗,可以为行中的每个单元格都应用相同的加粗样式。你可以循环遍历行中的所有单元格,并为每个单元格设置加粗的字体样式。下面是一个示例代码,展示如何设置一整行的字体加粗:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class SetRowBoldFontExample {
public static void main(String[] args) {
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Example Sheet");
// 创建行
Row row = sheet.createRow(0);
// 在行中创建几个单元格并设置它们的值
row.createCell(0).setCellValue("Header 1");
row.createCell(1).setCellValue("Header 2");
row.createCell(2).setCellValue("Header 3");
// 创建单元格样式
CellStyle style = workbook.createCellStyle();
// 创建字体对象,并设置加粗
Font font = workbook.createFont();
font.setBold(true);
// 将字体应用到样式
style.setFont(font);
// 循环遍历行中的所有单元格,并设置样式
for (int i = 0; i < row.getLastCellNum(); i++) {
Cell cell = row.getCell(i);
if (cell != null) {
cell.setCellStyle(style); // 为每个单元格设置加粗的字体样式
}
}
// 保存Excel文件(这里省略保存逻辑,您可以根据需要保存文件)
// FileOutputStream out = new FileOutputStream("example.xlsx");
// workbook.write(out);
// out.close();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 代码说明:
创建加粗的字体样式:通过
font.setBold(true)设置字体加粗,并将该字体应用到CellStyle。遍历行中的单元格:使用
row.getLastCellNum()获取当前行的最后一个单元格索引,通过循环为行中的每个单元格应用加粗样式。确保单元格不为空:在为单元格设置样式之前,确保单元格不为
null,避免空单元格抛出异常。
通过这种方式,你可以方便地为整行的所有单元格设置字体加粗。
# 首行固定
在使用 Apache POI 操作 Excel 时,你可以通过 Sheet.createFreezePane() 方法来冻结(固定)首行。下面是一个示例代码,展示如何冻结 Excel 的首行:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class FreezeFirstRowExample {
public static void main(String[] args) {
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Example Sheet");
// 冻结首行
sheet.createFreezePane(0, 1); // 参数:列索引,行索引(从 1 开始,表示冻结首行)
// 添加数据到首行
Row headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("Header 1");
headerRow.createCell(1).setCellValue("Header 2");
// 添加数据到其他行
for (int i = 1; i < 10; i++) {
Row row = sheet.createRow(i);
row.createCell(0).setCellValue("Data " + i);
row.createCell(1).setCellValue("More Data " + i);
}
// 保存Excel文件(这里省略保存逻辑,您可以根据需要保存文件)
// FileOutputStream out = new FileOutputStream("example.xlsx");
// workbook.write(out);
// out.close();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 代码说明:
冻结首行:
sheet.createFreezePane(0, 1)用来冻结 Excel 的首行。参数的含义如下:- 第一个参数
0表示冻结的列数(此处为 0,表示不冻结列)。 - 第二个参数
1表示冻结的行数,从索引 1 开始,冻结第一行。
- 第一个参数
冻结面板的范围:通过设置这两个参数,你可以控制冻结的行和列。例如,
sheet.createFreezePane(1, 1)表示同时冻结第一列和第一行。
通过这种方式,Excel 表格的首行在滚动时会一直保持在顶部,方便查看数据。
# 设置行高
在 Apache POI 中,你可以通过 Row.setHeight() 方法来设置 Excel 行的高度。行高的单位是 "twips"(1/20 点),因此你可以根据需要调整行高。以下是一个示例代码,展示如何设置行高:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class SetRowHeightExample {
public static void main(String[] args) {
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Example Sheet");
// 创建行
Row row = sheet.createRow(0);
// 设置行高(例如设置为 30 点高度,注意需要乘以 20)
row.setHeight((short)(30 * 20)); // 30 点的高度
// 添加数据到行
row.createCell(0).setCellValue("Hello, World!");
// 创建其他行,并设置默认行高
Row anotherRow = sheet.createRow(1);
anotherRow.setHeight((short)(20 * 20)); // 20 点的高度
anotherRow.createCell(0).setCellValue("Another Row");
// 保存Excel文件(这里省略保存逻辑,您可以根据需要保存文件)
// FileOutputStream out = new FileOutputStream("example.xlsx");
// workbook.write(out);
// out.close();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 代码说明:
- 设置行高:
row.setHeight((short)(height * 20))用来设置行高,其中height是你想要的高度,以点为单位。因为 1 点等于 20 twips,所以需要乘以 20。 - 设置默认行高:通过设置不同的行高,你可以调整特定行的显示高度,默认的行高为 15 点。
如果你想要恢复默认的行高,可以使用 row.setHeight((short)-1),这会将行高设置为默认值。
# 设置边框
在 Apache POI 中,设置 Excel 单元格的边框可以通过 CellStyle 对象的边框属性来实现。你可以设置单元格的四个边框(上、下、左、右)的样式和颜色。以下是一个设置单元格边框的示例代码:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class SetCellBorderExample {
public static void main(String[] args) {
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Example Sheet");
// 创建行
Row row = sheet.createRow(0);
// 创建单元格
Cell cell = row.createCell(0);
cell.setCellValue("Bordered Cell");
// 创建单元格样式
CellStyle style = workbook.createCellStyle();
// 设置边框样式
style.setBorderTop(BorderStyle.THIN); // 上边框
style.setBorderBottom(BorderStyle.THIN); // 下边框
style.setBorderLeft(BorderStyle.THIN); // 左边框
style.setBorderRight(BorderStyle.THIN); // 右边框
// 设置边框颜色(这里使用黑色)
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
style.setRightBorderColor(IndexedColors.BLACK.getIndex());
// 将样式应用到单元格
cell.setCellStyle(style);
// 保存Excel文件(这里省略保存逻辑,您可以根据需要保存文件)
// FileOutputStream out = new FileOutputStream("example.xlsx");
// workbook.write(out);
// out.close();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 代码说明:
设置边框样式:使用
CellStyle.setBorderTop(),setBorderBottom(),setBorderLeft(),setBorderRight()来设置四个方向的边框样式。BorderStyle.THIN是一个常见的细线边框样式,你可以根据需要选择其他样式,例如BorderStyle.MEDIUM,BorderStyle.DASHED, 等。设置边框颜色:使用
setTopBorderColor(),setBottomBorderColor(),setLeftBorderColor(),setRightBorderColor()方法来设置边框的颜色。这里使用了IndexedColors.BLACK.getIndex()来设置边框颜色为黑色,你可以选择其他颜色。
通过这种方式,你可以为单元格设置边框样式和颜色,从而使表格更具可读性和视觉效果。
# 设置居中
在 Apache POI 中,设置单元格内容的水平和垂直居中可以通过 CellStyle 的 setAlignment() 和 setVerticalAlignment() 方法来实现。以下是一个示例代码,展示如何设置单元格内容居中:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class SetCellAlignmentExample {
public static void main(String[] args) {
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表
Sheet sheet = workbook.createSheet("Example Sheet");
// 创建行
Row row = sheet.createRow(0);
// 创建单元格
Cell cell = row.createCell(0);
cell.setCellValue("Centered Text");
// 创建单元格样式
CellStyle style = workbook.createCellStyle();
// 设置水平居中
style.setAlignment(HorizontalAlignment.CENTER);
// 设置垂直居中
style.setVerticalAlignment(VerticalAlignment.CENTER);
// 将样式应用到单元格
cell.setCellStyle(style);
// 调整行高和列宽
row.setHeight((short) (20 * 20)); // 设置行高
sheet.setColumnWidth(0, 20 * 256); // 设置列宽
// 保存Excel文件(这里省略保存逻辑,您可以根据需要保存文件)
// FileOutputStream out = new FileOutputStream("example.xlsx");
// workbook.write(out);
// out.close();
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 代码说明:
设置水平居中:通过
style.setAlignment(HorizontalAlignment.CENTER)将单元格的内容水平居中。你还可以设置为LEFT,RIGHT等。设置垂直居中:通过
style.setVerticalAlignment(VerticalAlignment.CENTER)将单元格的内容垂直居中。你还可以设置为TOP,BOTTOM等。行高和列宽调整:为了使单元格内容更美观,示例中还设置了行高和列宽,确保单元格足够大以容纳居中的文本。
通过这种方式,你可以轻松设置单元格内容的居中显示,使表格内容更加整齐。