main
黄海 7 months ago
parent e5b209c48c
commit 70e46bbb1f

@ -18,4 +18,11 @@ Dsideal4r5t6y7u!@#
(1) 知识库-上传文档-QA问答对
1、点击下载对应模版并完善信息
2、上传的表格文件中每个 sheet 会作为一个文档sheet名称为文档名称
3、每次最多上传 50 个文件,每个文件不超过 100MB
3、每次最多上传 50 个文件,每个文件不超过 100MB
# 预置问题
1、某个区下学生数最多的学校。
2、某个区下专任教师数最多的学校。
3、某个区下的学校列表。
4、某个区下班级数大于20个的学校列表
5、各个区中学生数最多的学校列表

Binary file not shown.

@ -0,0 +1,173 @@
package UnitTest;
import com.jfinal.kit.Kv;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.*;
public class TestMaxKB {
/**
* ()
*
* 2019-01-01
*
* @param cell
* @return
*/
public static String getStringValue(Cell cell) {
String value = "";
if (cell == null || cell.equals(null) || cell.getCellType() == CellType.BLANK) {
value = "";
} else {
//判断数据类型
switch (cell.getCellType()) {
case FORMULA:
try {
/*
* 使HSSFDateUtil.isCellDateFormatted(cell)cell
* .getNumericCellValue();java.lang.NumberFormatException
*/
if (DateUtil.isCellDateFormatted(cell)) {
Date businessDateTime = cell.getDateCellValue();
Calendar cal = Calendar.getInstance();
cal.setTime(businessDateTime);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1;
int date = cal.get(Calendar.DATE);
value = year + "-" + month + "-" + date;
break;
} else {
value = String.valueOf(cell.getNumericCellValue());
}
} catch (IllegalStateException e) {
value = String.valueOf(cell.getRichStringCellValue());
}
break;
case NUMERIC:
value = "" + cell.getNumericCellValue();
break;
case STRING:
value = cell.getStringCellValue();
break;
default:
break;
}
}
//先设置为字符串格式
//cell.setCellType(CellType.STRING);
//然后读取之
//value=cell.getStringCellValue().trim();
if (value.endsWith(".0")) {
value = value.substring(0, value.length() - 2);
}
return value;
}
public static void main(String[] args) throws IOException {
//数据源
String excelPath = "D:\\dsWork\\QingLong\\Doc\\MaxKB\\各学校人员和班级统计.xlsx";
//写入模板
String templatePath = "D:\\dsWork\\QingLong\\Doc\\MaxKB\\excel模版.xlsx";
//输出结果
String outputPath = "D:\\dsWork\\QingLong\\Doc\\MaxKB\\结果.xlsx";
//模板读取
FileInputStream fTemplate = new FileInputStream(templatePath);
Workbook workbookTemplate = new XSSFWorkbook(fTemplate);
// 获取第一个工作表
Sheet sheetTemplate = workbookTemplate.getSheetAt(0);
// 创建单元格样式(可选)
CellStyle style = workbookTemplate.createCellStyle();
// 设置字体
Font font = workbookTemplate.createFont();
font.setFontName("宋体");
font.setFontHeightInPoints((short) 11);
style.setFont(font);
// 设置对齐方式
style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);
//使用POI读取EXCEL文件的内容
FileInputStream fSource = new FileInputStream(excelPath);
Workbook workbook = new XSSFWorkbook(fSource);
// 获取第一个工作表
Sheet sheetSource = workbook.getSheetAt(0);
//1、一共有哪些区
Set<String> areaSet = new HashSet<>();
for (Row row : sheetSource) {
String jyjName = getStringValue(row.getCell(1));//教育局
areaSet.add(jyjName);
}
//2、记录每个区下有多少个学校,多少个班级,多少个教师,多少个专任教师
Map<String, List<String>> schoolMap = new HashMap<>();
for (Row row : sheetSource) {
String schoolName = getStringValue(row.getCell(0));//学位名称
String jyjName = getStringValue(row.getCell(1));//教育局
String classCount = getStringValue(row.getCell(2));//班级数量
String studentCount = getStringValue(row.getCell(3));//学生数量
String teacherCount = getStringValue(row.getCell(4));//教师数量
String zhuanRenCount = getStringValue(row.getCell(5));//专任教师数量
List<String> list = new ArrayList<>();
if (schoolMap.containsKey(jyjName)) {
list = schoolMap.get(jyjName);
}
list.add("学校名称:" + schoolName + ",所属教育局:" + jyjName + ",班级数量:" + classCount + ",学生数量:" + studentCount + ",教师数量:" + teacherCount + ",专任教师数量:" + zhuanRenCount + ";");
schoolMap.put(jyjName, list);
}
//将数据写入到EXCEL
for (int i = 0; i < areaSet.size(); i++) {
String area = areaSet.toArray()[i].toString();
Row row = sheetTemplate.getRow(i + 1); // 放过表头
if (row == null) {
row = sheetTemplate.createRow(i + 1);//创建行
}
//(1)问题名称
Cell cell = row.getCell(0);
if (cell == null) {
cell = row.createCell(0);
}
cell.setCellValue(area + "下的学校列表");
cell.setCellStyle(style);
//(2)回答
cell = row.getCell(1);
if (cell == null) {
cell = row.createCell(1);
}
String content = "";
for (String s : schoolMap.get(area)) {
content = content + s + "\n";
}
cell.setCellValue(content);
cell.setCellStyle(style);
//(3)可选问题名称
cell = row.getCell(2);
if (cell == null) {
cell = row.createCell(2);
}
cell.setCellValue(area + "下的学校列表");
cell.setCellStyle(style);
}
// 保存文件
FileOutputStream fileOut = new FileOutputStream(outputPath);
workbookTemplate.write(fileOut);
//关闭文件
fSource.close();
workbook.close();
}
}
Loading…
Cancel
Save