Java Xlsx

package functions;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class TestExcel2 {

public static void main(String[] args) throws IOException {

// List<String> list =
// readXlsxAll("");
// for (int i = 0; i < list.size(); i++) {
// System.out.println(i + " " + list.get(i));
// }

List<String> list = readXlsxRow(
"",
1, 1);
// System.out.println(list.contains("GOVERNMENT_GOV_PILLAR_SCORE"));
// for (int i = 0; i < list.size(); i++) {
// System.out.println(i + " " + list.get(i));
// }

System.out
.println(readXlsxRowNum(
"",
1));
System.out
.println(readXlsxCloumnNum(
"",
1));
System.out
.println(readXlsxCell(
"",1,1,1));

}

public static List<String> readXlsxAll(String fileName) throws IOException {

XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fileName);
List<String> list = new ArrayList<String>();

for (int numSheet = 0; numSheet < xssfWorkbook.getNumberOfSheets(); numSheet++) {
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet);
if (xssfSheet == null) {
continue;
}

for (int rowNum = 0; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
if (xssfRow == null) {
continue;
}

int mapNum = 0;
for (int cellNum = 0; cellNum <= xssfRow.getLastCellNum(); cellNum++) {
XSSFCell xssfCell = xssfRow.getCell(cellNum);
if (xssfCell == null) {
continue;
}
list.add(mapNum, getValue(xssfCell));

}
}
}
return list;
}

public static String readXlsxCell(String fileName, int numSheet,
int rowNum, int cellNum) throws IOException {

XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fileName);

XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet-1);
if (xssfSheet == null) {
return "";
}

XSSFRow xssfRow = xssfSheet.getRow(rowNum-1);
if (xssfRow == null) {
return "";
}

XSSFCell xssfCell = xssfRow.getCell(cellNum-1);
if (xssfCell == null) {
return "";
}

return getValue(xssfCell);
}

public static int readXlsxRowNum(String fileName, int numSheet)
throws IOException {

XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fileName);

XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet - 1);
if (xssfSheet == null) {
return 0;
}

return xssfSheet.getLastRowNum() + 1;
}

public static int readXlsxCloumnNum(String fileName, int numSheet)
throws IOException {

XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fileName);
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet - 1);
if (xssfSheet == null) {
return 0;
}

XSSFRow xssfRow = xssfSheet.getRow(0);
if (xssfRow == null) {
return 0;
}

return xssfRow.getLastCellNum();
}

public static List<String> readXlsxRow(String fileName, int numSheet,
int rowNum) throws IOException {

XSSFWorkbook xssfWorkbook = new XSSFWorkbook(fileName);
List<String> list = new ArrayList<String>();

XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(numSheet - 1);
if (xssfSheet == null) {
return null;
}

XSSFRow xssfRow = xssfSheet.getRow(rowNum - 1);
if (xssfRow == null) {
return null;
}

int mapNum = 0;
for (int cellNum = 0; cellNum <= xssfRow.getLastCellNum(); cellNum++) {
XSSFCell xssfCell = xssfRow.getCell(cellNum);
if (xssfCell == null) {
continue;
}
list.add(mapNum, getValue(xssfCell));

}

return list;
}

public static String getValue(XSSFCell xssfCell) {
if (xssfCell.getCellType() == xssfCell.CELL_TYPE_STRING) {
return String.valueOf(xssfCell.getStringCellValue());
} else if (xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC) {
return String.valueOf(xssfCell.getNumericCellValue());
} else {
return "here";
}
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java中,我们可以使用Apache POI库来实现XLSX文件转换为XLS文件的功能。POI库是一个用于读写Microsoft Office文件的Java库,它也支持XLSX和XLS文件的互相转换。 要实现XLSX转换为XLS,首先需要导入POI库的相关依赖。可以在Maven或Gradle中添加如下依赖项: Maven: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> ``` Gradle: ``` implementation 'org.apache.poi:poi:4.1.2' ``` 接下来,我们可以使用POI库提供的API进行转换。首先需要创建一个XSSFWorkbook对象,通过该对象加载XLSX文件: ``` XSSFWorkbook workbook; try { FileInputStream fis = new FileInputStream("input.xlsx"); workbook = new XSSFWorkbook(fis); } catch (IOException e) { e.printStackTrace(); } ``` 然后,创建一个HSSFWorkbook对象,并将XSSFWorkbook对象中的内容复制到HSSFWorkbook对象中: ``` HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); for (int i = 0; i < workbook.getNumberOfSheets(); i++) { XSSFSheet xssfSheet = workbook.getSheetAt(i); HSSFSheet hssfSheet = hssfWorkbook.createSheet(xssfSheet.getSheetName()); for (int j = 0; j <= xssfSheet.getLastRowNum(); j++) { XSSFRow xssfRow = xssfSheet.getRow(j); HSSFRow hssfRow = hssfSheet.createRow(j); for (int k = 0; k <= xssfRow.getLastCellNum(); k++) { XSSFCell xssfCell = xssfRow.getCell(k); HSSFCell hssfCell = hssfRow.createCell(k); if (xssfCell != null) { switch (xssfCell.getCellType()) { case STRING: hssfCell.setCellValue(xssfCell.getStringCellValue()); break; case NUMERIC: hssfCell.setCellValue(xssfCell.getNumericCellValue()); break; case BOOLEAN: hssfCell.setCellValue(xssfCell.getBooleanCellValue()); break; case FORMULA: hssfCell.setCellValue(xssfCell.getCellFormula()); break; // Handle other cell types if needed } } } } } ``` 最后,将HSSFWorkbook对象中的内容写入文件中: ``` try { FileOutputStream fos = new FileOutputStream("output.xls"); hssfWorkbook.write(fos); fos.close(); } catch (IOException e) { e.printStackTrace(); } ``` 通过以上步骤,我们就可以将XLSX文件转换为XLS文件了。 ### 回答2: java xlsx转xls可以使用Apache POI库来实现。 首先,我们需要导入Apache POI库的相应依赖,例如在Maven项目中可以在pom.xml文件中添加如下依赖关系: ``` <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 然后,我们可以使用以下代码来进行xlsx转xls的操作: ```java import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import java.io.FileInputStream; import java.io.FileOutputStream; public class XlsxToXlsConverter { public static void main(String[] args) { String xlsxFilePath = "path/to/xlsx/file.xlsx"; String xlsFilePath = "path/to/xls/file.xls"; try { FileInputStream xlsxFileInputStream = new FileInputStream(xlsxFilePath); Workbook xlsxWorkbook = WorkbookFactory.create(xlsxFileInputStream); HSSFWorkbook xlsWorkbook = new HSSFWorkbook(); xlsWorkbook.createSheet("Sheet1"); // 创建一个名为"Sheet1"的工作表 // 将xlsx的内容复制到xls中 xlsWorkbook.cloneSheet(0); FileOutputStream xlsFileOutputStream = new FileOutputStream(xlsFilePath); xlsWorkbook.write(xlsFileOutputStream); xlsxFileInputStream.close(); xlsFileOutputStream.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上述代码中,我们首先打开xlsx文件,然后新建一个xls文件,并将xlsx文件中的内容复制到xls文件中,最后保存xls文件。 需要注意的是,在实际使用中,需要根据自己的文件路径和文件名修改代码中的相应部分,以确保正确读取和保存文件。 ### 回答3: 将Java中的XLSX文件转换为XLS文件可以通过Apache POI库实现。Apache POI是一个用于处理Microsoft文档格式(如XLS和XLSX)的开源Java库。 首先,确保你的项目中已经导入了Apache POI库的相关JAR文件。然后按照以下步骤进行转换: 1. 创建一个工作簿对象,使用XSSFWorkbook类来读取XLSX文件: ```java String xlsxFilePath = "path_to_xlsx_file.xlsx"; XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(xlsxFilePath)); ``` 2. 使用HSSFWorkbook类创建一个新的HSSFWorkbook对象来创建XLS文件的副本: ```java HSSFWorkbook xlsWorkbook = new HSSFWorkbook(); ``` 3. 循环遍历源工作簿中的每个工作表,并为每个工作表创建一个新的HSSFSheet对象: ```java for (int i = 0; i < workbook.getNumberOfSheets(); i++) { XSSFSheet xlsxSheet = workbook.getSheetAt(i); String sheetName = xlsxSheet.getSheetName(); HSSFSheet xlsSheet = xlsWorkbook.createSheet(sheetName); // 复制源工作表中的每一行 for(Row row : xlsxSheet) { HSSFRow xlsRow = xlsSheet.createRow(row.getRowNum()); // 复制源行中的每一个单元格 for(Cell cell : row) { HSSFCell xlsCell = xlsRow.createCell(cell.getColumnIndex()); // 获取源单元格的值 CellValue cellValue = evaluator.evaluate(cell); // 将值复制到新单元格 if (cellValue != null) { xlsCell.setCellValue(cellValue.getStringValue()); } } } } ``` 4. 最后,将新创建的XLS工作簿写入到目标文件: ```java String xlsFilePath = "path_to_xls_file.xls"; FileOutputStream outputStream = new FileOutputStream(xlsFilePath); xlsWorkbook.write(outputStream); outputStream.close(); ``` 通过以上步骤,你可以将XLSX文件转换为XLS文件。请确保在使用过程中处理可能出现的异常,并适当地使用try-catch块进行错误处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值