根据提供的文件信息,我们可以深入解析该Java代码片段及其功能,并从中提炼出与处理Excel文件相关的关键技术知识点。 ### 关键技术知识点 #### 1. **Java读取Excel文件** - **核心类**: `Workbook`, `Sheet`, `Cell` - `Workbook`: 代表一个Excel工作簿,可以理解为整个Excel文件。 - `Sheet`: 代表工作簿中的一个工作表,即我们通常所说的“页”或“表”。 - `Cell`: 表示单元格,每个单元格都可以存储数据。 - **实例化`Workbook`**: 通过`Workbook.getWorkbook(InputStream in)`方法创建`Workbook`对象。 ```java InputStream in = new FileInputStream(productBean.getBatchFile()); Workbook wb = Workbook.getWorkbook(in); ``` #### 2. **遍历Excel表格数据** - **获取Sheet**: 使用`getSheet(index)`方法获取指定索引的工作表。 ```java Sheet s = wb.getSheet(0); // 获取第一个工作表 ``` - **获取行列数**: 使用`getRows()`和`getColumns()`获取行数和列数。 ```java int row = s.getRows(); int col = s.getColumns(); ``` - **遍历数据**: 通过循环遍历每一行,并读取每个单元格的数据。 ```java for (int i = 1; i < row; i++) { // 读取单元格数据 String productName = s.getCell(0, i).getContents(); double price = Double.parseDouble(s.getCell(1, i).getContents()); // ...其他数据读取 } ``` #### 3. **数据处理与验证** - **数据转换**: 单元格中的数据可能为字符串类型,需要进行类型转换(如:将价格字符串转为`double`)。 - **数据验证**: 检查单元格内容是否符合预期,例如检查产品名称是否重复。 ```java List<String> productNameList = productDAO.findBySql( "SELECT product_name FROM t_product WHERE product_name IN ('" + s.getCell(0, i).getContents() + "')", null); if (!s.getCell(0, i).getContents().equals(s.getCell(0, i - 1).getContents())) { // 进行后续处理 } ``` #### 4. **文件上传处理** - **文件读取**: 如果单元格包含文件路径,则可以使用`File`类读取对应文件。 ```java if (StringUtil.isNotEmpty(s.getCell(8, i).getContents())) { File smallFile = new File(s.getCell(8, i).getContents()); productBean.setUploadSmallImage(smallFile); productBean.setUploadSmallImageFileName(smallFile.getName()); } ``` - **文件类型获取**: 可以通过文件名后缀来判断文件类型。 ```java String fileType = smallFile.getName().substring(smallFile.getName().lastIndexOf(".")); productBean.setUploadSmallImageContentType(fileType); ``` #### 5. **异常处理** - **捕获异常**: 在读取Excel文件时可能会遇到各种异常,如文件不存在、格式不正确等,需要通过try-catch结构来处理这些异常。 ```java try { Workbook wb = Workbook.getWorkbook(in); } catch (IOException e) { // 处理异常 } ``` 通过以上技术知识点的解析,我们可以了解到Java在处理Excel文件方面的基本流程和技术细节,这对于开发涉及Excel文件读写的项目非常有帮助。此外,需要注意的是,在实际开发中还需要考虑到更多的边界情况和异常处理策略,确保程序的稳定性和健壮性。
List<Category> categoryList = (List<Category>)ServiceFacade.getCategoryService()
.findCategoryList(Dictionary.COMMAND_PRODUCT_TYPE);
List<Brand> brandList = ServiceFacade.getBrandService().findBrandList();
InputStream in = new FileInputStream(productBean.getBatchFile());
Workbook wb;
try {
wb = Workbook.getWorkbook(in);
Sheet s = wb.getSheet(0);// 第1个sheet
Cell c = null;
int row = s.getRows();// 总行数
int col = s.getColumns();// 总列数
for (int i = 1; i < row; i++) {
if (i > 1) {
productBean = new ProductBean();
productBean.getProperties().setCount("0");
}
Product product = new Product();
List<String> productNameList = productDAO.findBySql(
"select product_name from t_product where product_name in('"
+ s.getCell(0, i).getContents() + "')", null);
if (!s.getCell(0, i).getContents().equals(
s.getCell(0, i - 1).getContents())) {
product.setProductName(s.getCell(0, i).getContents());
product.setPrice(Double.parseDouble(s.getCell(1, i)
.getContents()));
product.setHigPrice(Double.parseDouble(s.getCell(2, i)
.getContents()));
product.setProperty(s.getCell(3, i).getContents());
product.setSize(s.getCell(4, i).getContents());
product.setDescription(s.getCell(6, i).getContents());
product.setColor(s.getCell(7, i).getContents());
// 上传缩略图片
if (StringUtil.isNotEmpty(s.getCell(8, i).getContents())) {
File smallFile = new File(s.getCell(8, i).getContents());
productBean.setUploadSmallImage(smallFile);
productBean.setUploadSmallImageFileName(smallFile
.getName());
String fileType = smallFile.getName().substring(
(smallFile.getName().indexOf(".")));
productBean.setUploadSmallImageContentType(fileType);
}
/** 上传相册 **/
// 形象图
if (StringUtil.isNotEmpty(s.getCell(9, i).getContents())) {
File faceFile = new File(s.getCell(9, i).getContents());
productBean.setUploadFaceImage(faceFile);
productBean.setUploadFaceImageFileName(faceFile
.getName());
String ffiletype = faceFile.getName().substring(
faceFile.getName().indexOf("."));
productBean.setUploadFaceImageContentType(ffiletype);
}
// 正面图
if (StringUtil.isNotEmpty(s.getCell(10, i).getContents())) {
File backFile = new File(s.getCell(10, i).getContents());
productBean.setUploadBackImage(backFile);
productBean.setUploadBackImageFileName(backFile
.getName());
剩余6页未读,继续阅读
- 粉丝: 1
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助