我正在尝试使用excel的内容创建文件夹。我能够使用正确的数据读取excel文件,但我无法从该数据创建文件夹。
到目前为止我写的代码:
public static void main(String[] args) {
try {
InputStream ExcelFileToRead = new FileInputStream("C:\\Users\\430427\\Desktop\\vivek.xlsx");
XSSFWorkbook wb = new XSSFWorkbook(ExcelFileToRead);
XSSFWorkbook test = new XSSFWorkbook();
XSSFSheet sheet = wb.getSheetAt(0);
XSSFRow row;
XSSFCell cell;
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
row = (XSSFRow) rows.next();
Iterator cells = row.cellIterator();
int i = 0;
while (cells.hasNext()) {
cell = (XSSFCell) cells.next();
XSSFCell cell2 = row.getCell(i);
i++;
if(cell2 !=null){
//if(cell2.toString().replaceAll("\\s", "").length()>0)
System.out.print("/"+cell2);
String dirName = "C:\\Users\\430427\\Desktop\\"+cell2;
new File(dirName).mkdir();
}
}
System.out.println();
i = 0;
}
System.out.println("\n");
}
catch (IOException ex) {
ex.printStackTrace();
}
}
答案 0 :(得分:1)
https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFCell.html
cell2是XSSFCell
对象而不是字符串。
尝试cell2.getStringCellValue()
中的String dirName = "C:\\Users\\430427\\Desktop\\"+cell2;
获取字符串值。
我建议您从代码中获取用户配置文件,而不是硬编码路径。
修改强>
apache poi中没有columnIterator。所以我提出了另一种方法。 这个代码只对你的情况有意义(在第一列只有一行,在最后一列只有一行或多行),就像你在评论中说的那样:
数据类似于B1,101中的CALEG,C1中的html,标题A,标题 B,标题C,标题D分别在D1,D2,D3,D4中。
我希望能给你一些想法来实现你所需要的。
public static void main(String[] args) {
XSSFWorkbook wb = null;
try {
// input file path here
InputStream ExcelFileToRead = new FileInputStream("D:\\test.xlsx");
wb = new XSSFWorkbook(ExcelFileToRead);
XSSFSheet sheet = wb.getSheetAt(0);
XSSFRow row;
XSSFCell cell;
Iterator<Row> rows = sheet.rowIterator();
// destination path here
String dirName = "D:\\tmp";
String parentPath = null;
int lastCellIdx = 0;
while (rows.hasNext()) {
row = (XSSFRow) rows.next();
if (lastCellIdx != 0) {
new File(parentPath + "\\" + row.getCell(lastCellIdx).toString()).mkdir();
} else {
Iterator<Cell> cells = row.cellIterator();
while (cells.hasNext()) {
cell = (XSSFCell) cells.next();
if (cell != null) {
dirName = dirName + "\\" + cell.toString();
}
}
lastCellIdx = row.getLastCellNum() - 1;
parentPath = new File(dirName).getParent();
new File(dirName).mkdirs();
}
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
wb.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}