main
黄海 10 months ago
parent 5d0914bdb2
commit 195fe531f7

@ -13,10 +13,7 @@ import com.jfinal.kit.StrKit;
import com.jfinal.upload.UploadFile;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.*;
import java.util.regex.Pattern;
public class excelConvertController extends Controller {
@ -68,15 +65,6 @@ public class excelConvertController extends Controller {
for (int i = 0; i < reader.getColumnCount(); i++) {
colNames[cl++] = read.getFirst().get(i).toString();
}
// 写入表头
List<String> header = new ArrayList<>();
for (int cNum : fixedColumns) {
String cName = colNames[cNum];//列名
header.add(cName);
}
header.add("类型");
header.add("数量");
writer.writeHeadRow(header);
//数据
List<List<Object>> data = reader.read(1, reader.getRowCount());//从第1行读取到最后一行
@ -102,13 +90,93 @@ public class excelConvertController extends Controller {
writer.flush();
writer.close();
reader.close();
/***************************************************************************************/
//上面的代码没动过,下面是新写的
reader = ExcelUtil.getReader(output);
//前面固定的
List<String> header = new ArrayList<>();
header.add("年份");
header.add("学段");
header.add("区域分类");
header.add("总量分类");
header.add("区域数值");
header.add("总量数值");
// 写入表头
uuidFileName = UUID.randomUUID().toString().toUpperCase() + ".xlsx";
output = tempDir + uuidFileName;
writer = ExcelUtil.getWriter(output);
writer.writeHeadRow(header);
//还需要继续扩展EXCEL模板实现数据转换
Set<String> setArea = new HashSet<>();
setArea.add("城区");
setArea.add("镇区");
setArea.add("乡村");
List<List<String>> res = new ArrayList<>();
data = reader.read(1, reader.getRowCount());//从第1行读取到最后一行
for (List<Object> row : data) {
List<String> rowData = new ArrayList<>();
//输出固定列的名称和值
rowData.add(row.get(0).toString());//年度
rowData.add(row.get(1).toString());//学段
if (setArea.contains(row.get(2).toString())) {//如果是城区、镇区、乡村
rowData.add(row.get(2).toString());
rowData.add("");
rowData.add(row.get(3).toString());
rowData.add("");
} else {
rowData.add("");
rowData.add(row.get(2).toString());
rowData.add("");
rowData.add(row.get(3).toString());
}
res.add(rowData);
}
// 排序
Collections.sort(res, new Comparator<List<String>>() {
@Override
public int compare(List<String> o1, List<String> o2) {
// 先比较年份
// int yearCompare = o1.get(0).compareTo(o2.get(0));
// if (yearCompare != 0) {
// return yearCompare;
// }
// 年份相同,比较学段
int stageCompare = o1.get(1).compareTo(o2.get(1));
if (stageCompare != 0) {
return stageCompare;
}
// 学段相同,比较区域分类
int areaCompare = o1.get(2).compareTo(o2.get(2));
if (areaCompare != 0) {
return areaCompare;
}
// 区域分类相同,比较总量分类
return o1.get(3).compareTo(o2.get(3));
}
});
for (List<String> re : res) {
writer.writeRow(re);
}
reader.close();
writer.flush();
writer.close();
Kv kv = Kv.by("success", true);
kv.set("uuidFileName", uuidFileName);
renderJson(kv);
}
@Before({GET.class})
public void download(String uuidFileName) throws IOException {
public void download(String uuidFileName) {
String output = tempDir + uuidFileName;
renderFile(new File(output), "转换结果.xlsx");
}

@ -90,6 +90,7 @@ public class ConvertExcel {
setArea.add("镇区");
setArea.add("乡村");
List<List<String>> res = new ArrayList<>();
data = reader.read(1, reader.getRowCount());//从第1行读取到最后一行
for (List<Object> row : data) {
List<String> rowData = new ArrayList<>();
@ -108,7 +109,37 @@ public class ConvertExcel {
rowData.add("");
rowData.add(row.get(3).toString());
}
writer.writeRow(rowData);
res.add(rowData);
}
// 排序
Collections.sort(res, new Comparator<List<String>>() {
@Override
public int compare(List<String> o1, List<String> o2) {
// 先比较年份
// int yearCompare = o1.get(0).compareTo(o2.get(0));
// if (yearCompare != 0) {
// return yearCompare;
// }
// 年份相同,比较学段
int stageCompare = o1.get(1).compareTo(o2.get(1));
if (stageCompare != 0) {
return stageCompare;
}
// 学段相同,比较区域分类
int areaCompare = o1.get(2).compareTo(o2.get(2));
if (areaCompare != 0) {
return areaCompare;
}
// 区域分类相同,比较总量分类
return o1.get(3).compareTo(o2.get(3));
}
});
for (List<String> re : res) {
writer.writeRow(re);
}
reader.close();

Loading…
Cancel
Save