用java读取同级目录下所有excle文件并转成json格式写到txt文档中

时间:2021-09-01 12:43:03

由于项目需要,用Java写了一个程序。程序的功能是读取同级目录下所有的excle文件(只能是后缀名为.xls的文件,后缀名为.xlsx的文件读不了,用office转换一下格式就可以读了)。然后写到.txt文件中,写入的格式为JSON格式,并且写入的是不同excle文件时需要换行。

要读取excle文件需要导入一个包:jxl.jar
要转换成成JSON格式需要导入另一个包:json.jar
如下图:

用java读取同级目录下所有excle文件并转成json格式写到txt文档中

package excleReader;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import org.json.JSONException;
import org.json.JSONObject;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

public class FileReader {
public static void main(String[] args) throws JSONException, IOException {
File directory = new File(".");// 当前文件的路径
File[] files = directory.listFiles();//返回一个目录中的每个文件或目录
for(int i = 0;i<files.length;i++){
if(files[i].getName().endsWith("xls")){//是.xls文件时才执行
FileReader fr = new FileReader();
File excleFile = new File(directory.getCanonicalPath() + "\\" + files[i].getName());
System.out.println(directory.getCanonicalPath() + "\\" + files[i].getName());
String role = fr.readExcel(excleFile);//读取excel文件
FileWriter fw = new FileWriter(directory.getCanonicalPath() + "\\role.txt",true);//加true表示在写在文件的结尾而不是开头
fw.write(role + "\r\n");//写到role.txt文件中并换行
fw.close();
}
}
}

public String readExcel(File file) throws JSONException {
try {
// 创建输入流,读取Excel
InputStream input = new FileInputStream(file.getPath());
Workbook wb = Workbook.getWorkbook(input);
ArrayList<JSONObject> pageToRole = new ArrayList<JSONObject>();

for (int index = 0; index < wb.getNumberOfSheets(); index++) {
// 每个页签创建一个Sheet对象
Sheet sheet = wb.getSheet(index);
for (int i = 2; i < sheet.getRows(); i++) {//从文件的第3行开始
if (sheet.getCell(1, i).getContents().trim().length() == 0) {
continue;
} else {
JSONObject json = new JSONObject();
String mypage = sheet.getCell(1, i).getContents();//第i行第2列的内容
String role = sheet.getCell(3, i).getContents();//第i行第4列的内容
json.put("role", role);
json.put("page", mypage);
pageToRole.add(json);
}
}
}
return pageToRole.toString();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

可用导出成jar包。在同级目录放几个.xls文件就可以双击执行了。