如题,java操作Excel,读取数据,写数据。参考博客地址:https://blog.csdn.net/cpcpcp123/article/details/82763937
public class Excel {
public static void main(String[] args) {
try {
//获取指定行的值
readSpecifyRows(new File("F:\\ry2.xls"));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 读取指定行
*
* @param file
* @throws Exception
*/
public static void readSpecifyRows(File file) throws Exception {
ArrayList<String> columnList = new ArrayList<String>();
Workbook readwb = null;
InputStream io = new FileInputStream(file.getAbsoluteFile());
readwb = Workbook.getWorkbook(io);
Sheet readsheet = readwb.getSheet(0);
int rsColumns = readsheet.getColumns(); //获取表格列数
int rsRows = readsheet.getRows(); //获取表格行数
BufferedWriter bw = new BufferedWriter(new FileWriter("ry.json"), 8 * 1024);
bw.write("{\n" +
" \"datas\": [");
// 遍历所有行
for (int i = 0; i < rsRows; i++) {
// 遍历该行的每一列,读取该行数据
for (int j = 0; j < rsColumns; j++) {
//i代表第几行,j代表第几列
Cell cell_name = readsheet.getCell(j, i);
columnList.add(cell_name.getContents());
}
// 获取该行下一行的状态值,用于判断是否由乡镇切换到村、村切换到镇或者结束
String nextLineIndex = "";
if (i + 1 < rsRows) {
nextLineIndex = readsheet.getCell(0, i + 1).getContents();
}
// 如果该行是乡镇等级
if (Integer.parseInt(columnList.get(0)) == 4) {
if (nextLineIndex.equals("5")) {
bw.write("{\n" +
" \"townname\": " + "\"" + columnList.get(1) + "\"," +
" \"towncode\": " + "\"" + columnList.get(2) + "\"," +
" \"children\": [");
} else {
bw.write(" ]\n" +
"}");
}
// 如果该行是村镇等级
} else if (Integer.parseInt(columnList.get(0)) == 5) {
if (nextLineIndex.equals("")) {
bw.write("{\n" +
" \"hamletname\": " + "\"" + columnList.get(1) + "\"," +
" \"hamletcode\": " + "\"" + columnList.get(2) + "\"" +
" }]}]}");
} else if (nextLineIndex.equals("4")) {
bw.write("{\n" +
" \"hamletname\": " + "\"" + columnList.get(1) + "\"," +
" \"hamletcode\": " + "\"" + columnList.get(2) + "\"" +
" }]},");
} else {
bw.write("{\n" +
" \"hamletname\": " + "\"" + columnList.get(1) + "\"," +
" \"hamletcode\": " + "\"" + columnList.get(2) + "\"" +
" },");
}
}
columnList.clear();
}
bw.close();
readwb.close();
}
}