根据提供的文件信息,我们可以归纳出一系列与Java处理Excel表格相关的知识点。下面将详细解析这些知识点,并结合实际场景进行说明。 ### 1. 加载Excel文件 加载Excel文件是处理Excel内容的第一步。在这个过程中,我们需要使用Apache POI库来完成这一操作。具体步骤如下: ```java POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filePath)); HSSFWorkbook wb = new HSSFWorkbook(fs); ``` 这里的关键在于使用`POIFSFileSystem`类来打开文件流,并通过`HSSFWorkbook`对象来创建一个工作簿对象。这样我们就能够进一步对Excel文件进行操作了。 ### 2. 遍历Excel表格中的行 遍历表格中的行是处理Excel文件内容的基础。在Java中,我们可以通过以下代码来实现这一点: ```java for (int i = 0; i < wb.getNumberOfSheets(); i++) { HSSFSheet sheet = wb.getSheetAt(i); for (int j = sheet.getFirstRowNum(); j < sheet.getLastRowNum(); j++) { HSSFRow row = sheet.getRow(j); if (row != null) { // 处理行数据 } } } ``` 这里通过`getNumberOfSheets()`方法获取工作表的数量,然后通过`getSheetAt(i)`方法得到每一个工作表。之后再遍历每一行,检查行是否为空,如果非空,则可以进一步处理行内的数据。 ### 3. 设置单元格格式 在处理Excel时,经常会涉及到设置单元格格式的需求。例如: ```java HSSFRow row = sheet.getRow(i); HSSFCell cell = row.getCell((short)j); wb.setSheetName(n, "", HSSFCell.ENCODING_UTF_16); cell.setEncoding((short)1); cell.setCellValue("内容"); ``` 这里展示了如何设置单元格的编码格式、内容等属性。`setSheetName`用于设置工作表的名称,而`setCellValue`则用于设置单元格的内容。 ### 4. 单元格数值类型的读写 对于数值型单元格的处理尤为重要,因为这类数据经常被用来存储关键信息。例如: ```java cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); double value = cell.getNumericCellValue(); ``` 通过`setCellType`设置单元格类型为数值型,然后使用`getNumericCellValue`获取其值。 ### 5. 设置列宽和行高 为了使Excel表格更加美观,调整列宽和行高是很常见的需求: ```java sheet.setColumnWidth((short)column, (short)width); row.setHeight((short)height); ``` 其中`setColumnWidth`用于设置指定列的宽度,而`setHeight`则用于设置行的高度。 ### 6. 合并单元格 合并单元格也是处理Excel表格时的一个常见需求: ```java Region region = new Region((short)rowFrom, (short)columnFrom, (short)rowTo, (short)columnTo); sheet.addMergedRegion(region); ``` 通过定义`Region`对象指定要合并的单元格范围,并使用`addMergedRegion`方法将其添加到工作表中。 ### 7. 获取单元格的字符串值 在处理Excel表格时,常常需要读取单元格中的字符串内容: ```java public String getCellStringValue(HSSFCell cell) { String cellValue = ""; switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_STRING: cellValue = cell.getStringCellValue(); break; case HSSFCell.CELL_TYPE_NUMERIC: cellValue = String.valueOf(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cellValue = String.valueOf(cell.getNumericCellValue()); break; default: cellValue = ""; break; } return cellValue; } ``` 此方法可以根据单元格的不同类型返回相应的字符串值。 ### 8. 设置单元格边框样式 为了让Excel表格看起来更加专业,设置单元格边框是一种常用的方式: ```java public static HSSFCellStyle getCellStyle(short type) { HSSFWorkbook wb = new HSSFWorkbook(); HSSFCellStyle style = wb.createCellStyle(); style.setBorderBottom(type); style.setBorderLeft(type); style.setBorderRight(type); style.setBorderTop(type); return style; } ``` 通过这个方法,可以方便地设置单元格的上下左右边框样式。 ### 9. 设置字体样式 设置字体样式可以让Excel表格更具可读性和专业性: ```java HSSFFont f = wb.createFont(); f.setFontHeightInPoints((short)11); f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); ``` 这里演示了如何设置字体大小和加粗程度。 通过以上知识点的介绍,我们可以看到Java处理Excel文件时涉及到的各种技术细节,包括但不限于文件的加载、数据的读取和写入、格式的设置等。这些技术点对于开发基于Excel的数据处理应用具有重要的指导意义。
博客分类: java
1、遍历workbook
// load源文件
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filePath));
HSSFWorkbook wb = new HSSFWorkbook(fs);
for (int i = 0; i < wb.getNumberOfSheets(); i++) {
HSSFSheet sheet = wb.getSheetAt(i);
for (int j = sheet.getFirstRowNum(); j < sheet.getLastRowNum(); j++) {
HSSFRow row = sheet.getRow(j);
if (row != null) {
// 。。。操作}
}
}
}
// 目标文件
FileOutputStream fos = new FileOutputStream(objectPath);
// 写文件
wb.write(fos);
fos.close();
2、得到列和单元格
HSSFRow row = sheet.getRow(i);
HSSFCell cell = row.getCell((short) j);
3、设置sheet名称和单元格内容为中文
wb.setSheetName(n, "中文",HSSFCell.ENCODING_UTF_16);
cell.setCellValue("中文");
4、单元格内容未公式或数值,可以这样读写
cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
cell.getNumericCellValue();
5、设置列宽、行高
sheet.setColumnWidth((short)column,(short)width);
row.setHeight((short)height);
6、添加区域,合并单元格
Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo,(short)columnTo);
sheet.addMergedRegion(region);
//得到所有区域
sheet.getNumMergedRegions() ;
7、常用方法
根据单元格不同属性返回字符串数值
public String getCellStringValue(HSSFCell cell) {
String cellValue = "";
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_STRING:
cellValue = cell.getStringCellValue();
剩余9页未读,继续阅读
- 粉丝: 1
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Java技术的ASC学业支持中心并行项目开发设计源码
- 基于Java和微信支付的wxmall开源卖票商城设计源码
- 基于Java和前端技术的东软环保公众监督系统设计源码
- 基于Python、HTML、CSS的crawlerdemo软件工程实训爬虫设计源码
- 基于多智能体深度强化学习的边缘协同任务卸载方法设计源码
- 基于BS架构的Java、Vue、JavaScript、CSS、HTML整合的毕业设计源码
- 基于昇腾硬件加速的AI大模型性能优化设计源码
- 基于Plpgsql与Python FastAPI的mini-rbac-serve权限管理系统后端设计源码
- 基于SpringBoot的轻量级Java快速开发源码
- 基于Python开发的物流调度算法设计源码