package io.visi;
/**
* @Author: keliang
* @Date: 2021/10/1 08:59
*/
import cn.hutool.core.util.StrUtil;
import com.alibaba.druid.sql.visitor.functions.Char;
import com.alibaba.excel.EasyExcel;
import io.visi.sister.WordDTO;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.poifs.filesystem.FileMagic;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 统计
*/
public class Statistic {
private static String filePath1 = "/Users/keliang/test/sister/红太村调查/红太村村庄调查问卷1.docx";
// '√' 8730
private static String duigou = String.valueOf((char) 8730);
// '\n' 10
private static String br = String.valueOf((char) 10);
// '①' 9312
private static String circle1 = String.valueOf((char) 9312);
private static String circle2 = String.valueOf((char) 9313);
private static String circle3 = String.valueOf((char) 9314);
private static String circle4 = String.valueOf((char) 9315);
private static String circle5 = String.valueOf((char) 9316);
private static String circle6 = String.valueOf((char) 9317);
private static String circle7 = String.valueOf((char) 9318);
private static String circle8 = String.valueOf((char) 9319);
private static String circle9 = String.valueOf((char) 9320);
private static String circle10 = String.valueOf((char) 9321);
// '\t' 9
private static String t = String.valueOf((char) 9);
// ' ' 32
private static String blank = String.valueOf((char) 32);
// '_' 95
private static String xhx = String.valueOf((char) 95);
// ':'65306
private static String mh = String.valueOf((char) 65306);
// ':' 58
private static String mh2 = String.valueOf((char) 58);
// '□' 9633
private static String rect = String.valueOf((char) 9633);
// ',' 65292
private static String douhao = String.valueOf((char) 65292);
// ';' 65307
private static String fenhao = String.valueOf((char) 65307);
// '。' 12290
private static String juhao = String.valueOf((char) 12290);
//小括号'⑴'
private static String xkh1 = String.valueOf((char) 9332);
private static String xkh2 = String.valueOf((char) 9333);
private static String xkh3 = String.valueOf((char) 9334);
private static String xkh4 = String.valueOf((char) 9335);
private static String xkh5 = String.valueOf((char) 9336);
private static String xkh6 = String.valueOf((char) 9337);
private static String xkh7 = String.valueOf((char) 9338);
private static String xkh8 = String.valueOf((char) 9339);
private static String xkh9 = String.valueOf((char) 9340);
private static String xkh10 = String.valueOf((char) 9341);
private static String xkh11 = String.valueOf((char) 9342);
private static String xkh12 = String.valueOf((char) 9343);
private static String xkh13 = String.valueOf((char) 9344);
private static String xkh14 = String.valueOf((char) 9345);
private static String xkh15 = String.valueOf((char) 9346);
private static String xkh16 = String.valueOf((char) 9347);
private static final String breakFH = br + circle1 + circle2 + circle3 + circle4 + circle5 + circle6 + circle7 + circle8 + circle9 + circle10 +
mh + mh2 + rect + xkh1 + xkh2 + xkh3 + xkh4 + xkh5 + xkh6 + xkh7 + xkh8 + xkh9 + xkh10;
private static String fileDir = "/Users/keliang/test/sister/红太村调查/";
public static void main(String[] args) throws Exception {
String fileDir = "/Users/keliang/test/sdata/红太村调查/";
List<WordDTO> list = new ArrayList<>();
File file = new File(fileDir);
File[] fileList = file.listFiles();
for (int i = 0; i < fileList.length; i++) {
if (fileList[i].isFile()) {
System.out.println(fileList[i].toString());
String filePath = fileList[i].toString();
//really a OOXML Word file
InputStream is = new BufferedInputStream(new FileInputStream(filePath));
String wordContent = read(is);
//截取"填写人基本情况" 到 "二、目前居住生活状况" 之间的内容
String txrjbqk = "填写人基本情况";
String mqjzshzk = "目前居住生活状况";
String xncjsyx = "新农村建设意向";
String qtfm = "其他方面";
Integer txrjbqkIndex = wordContent.indexOf(txrjbqk);
Integer mqjzshzkIndex = wordContent.indexOf(mqjzshzk);
Integer xncjsyxIndex = wordContent.indexOf(xncjsyx);
Integer qtfmIndex = wordContent.indexOf(qtfm);
WordDTO dto = new WordDTO();
dto.setDocName(filePath);
//word中 一、填写人基本情况的内容
String wordContentPart1 = wordContent.substring(txrjbqkIndex, mqjzshzkIndex);
writePart1(wordContentPart1, dto);
//word中 二、目前居住生活状况
String wordContentPart2 = wordContent.substring(mqjzshzkIndex, xncjsyxIndex);
writePart2(wordContentPart2, dto);
//word中 三、新农村建设意向
String wordContentPart3 = wordContent.substring(xncjsyxIndex, qtfmIndex);
writePart3(wordContentPart3, dto);
//word中 四、其他方面
String wordContentPart4 = wordContent.substring(qtfmIndex);
writePart4(wordContentPart4, dto);
is.close();
list.add(dto);
}
}
String fileName = "/Users/keliang/test/sdata/ok/红太村调查.xlsx";
EasyExcel.write(fileName, WordDTO.class).sheet("数据").doWrite(list);
}
static String read(InputStream is) throws Exception {
System.out.println(FileMagic.valueOf(is));
String text = "";
if (FileMagic.valueOf(is) == FileMagic.OLE2) {
WordExtractor ex = new WordExtractor(is);
text = ex.getText();
ex.close();
} else if (FileMagic.valueOf(is) == FileMagic.OOXML) {
XWPFDocument doc = new XWPFDocument(is);
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
text = extractor.getText();
extractor.close();
}
return text;
}
private static void writePart4(String wordContentPart4, WordDTO dto) {
System.out.println("部分4");
for (int no = 32; no <= 35; no++) {
if (no == 35) {
String startStr = "其他的意见和建议";
wordContentPart4.indexOf(startStr);
Integer startIndex = wordContentPart4.indexOf(startStr) + 8;
Integer endIndex = wordContentPart4.length();
String value = wordContentPart4.substring(startIndex);
System.out.println("no" + no + ": " + value);
dto.setQtdyjhjy(value);
} else {
Integer duigouIndex = wordContentPart4.indexOf(duigou);
String value = getDuigouAfterContent(wordContentPart4, duigouIndex);
wordContentPart4 = wordContentPart4.substring(duigouIndex + 1);
System.out.println("no" + no + ": " + value);
switch (no) {
case 32:
dto.setRgjlczjxjzzzzbcywdqtdftyjxznsfyyfqmqdzzbhdxydxjbc(value);
break;
case 33:
dto.setNsfzzctggfdxsyjttyjybctdhqtggzc(value);
break;
case 34:
dto.setNdbcmqzycjlsdgsgjzlssjdqkljcd(value);
break;
}
}
}
}
private static void writePart3(String wordContentPart3, WordDTO dto) {
System.out.println("部分3");
for (int no = 24; no <= 31; no++) {
if (no == 24) {
//多选
String endStr = "新宅是否需要阳台或屋顶平台";
Integer endIndex = wordContentPart3.indexOf(endStr);
Map<String, String> value25Map = getDuigouAfterDuoxuanContent(wordContentPart3, endIndex);
String value = value25Map.get("value");
wordContentPart3 = value25Map.get("content") != null ? value25Map.get("content") : wordContentPart3;
System.out.println("no" + no + ": " + value);
dto.setNxwxzdjzxs(value);
} else if (no == 28) {
String value = "";
System.out.println("no" + no + ": " + value);
String value1 = getXkhDurationContent(wordContentPart3, xkh1, xkh2);
String value2 = getXkhDurationContent(wordContentPart3, xkh2, xkh3);
String value3 = getXkhDurationContent(wordContentPart3, xkh3, xkh4);
String value4 = getXkhDurationContent(wordContentPart3, xkh4, xkh5);
String value5 = getXkhDurationContent(wordContentPart3, xkh5, xkh6);
String value6 = getXkhDurationContent(wordContentPart3, xkh6, xkh7);
String value7 = getXkhDurationContent(wordContentPart3, xkh7, xkh8);
String value8 = getXkhDurationContent(wordContentPart3, xkh8, xkh9);
String value9 = getXkhDurationContent(wordContentPart3, xkh9, xkh10);
String value10 = getXkhDurationContent(wordContentPart3, xkh10, xkh11);
String value11 = getXkhDurationContent(wordContentPart3, xkh11, xkh12);
String value12 = getXkhDurationContent(wordContentPart3, xkh12, xkh13);
String value13 = getXkhDurationContent(wordContentPart3, xkh13, xkh14);
String value14 = getXkhDurationContent(wordContentPart3, xkh14, xkh15);
String value15 = getXkhDurationContent(wordContentPart3, xkh15, xkh16);
String endStr = "上表中您最希望尽快改善";
String value16 = getXkhDurationContent(wordContentPart3, xkh16, endStr);
dto.setDlzk(value1);
dto.setTcss(value2);
dto.setYlz(value3);
dto.setWhhdz(value4);
dto.setXxyey(value5);
dto.setSd(value6);
dto.setTyss(value7);
dto.setGdzk(value8);
dto.setZfrl(value9);
dto.setCn(value10);
dto.setGsys(value11);
dto.setYspfgq(value12);
dto.setWscl(value13);
dto.setLjsj(value14);
dto.setCzzm(value15);
dto.setHjwstj(value16);
Integer endIndex = wordContentPart3.indexOf(endStr);
wordContentPart3 = wordContentPart3.substring(endIndex);
} else if (no == 29) {
//填空
String startStr = "上表中您最希望尽快改善的项目按顺序排队";
String endtStr = "您希望村内设置何种室内活动场所";
Integer startIndex = wordContentPart3.indexOf(startStr) + 25;
Integer endIndex = wordContentPart3.indexOf(endtStr);
String value = getTianKongContent(wordContentPart3, startIndex, endIndex);
wordContentPart3 = wordContentPart3.substring(endIndex);
System.out.println("no" + no + ": " + value);
// if (value.contains(xkh1) && !value.equals("道路状况")){
// value = value.replaceAll(xkh1, "道路状况");
// }else {
// value = value.replaceAll(xkh1, "");
// }
// value = value.replaceAll("、", ";");
value = (value.contains(xkh1) && !value.contains("道路状况")) ? value.replaceAll(xkh1, "道路状况") : value.replaceAll(xkh1, "");
value = (value.contains(xkh2) && !value.contains("停车设施")) ? value.replaceAll(xkh2, "停车设施") : value.replaceAll(xkh2, "");
value = (value.contains(xkh3) && !value.contains("医疗站")) ? value.replaceAll(xkh3, "医疗站") : value.replaceAll(xkh3, "");
value = (value.contains(xkh4) && !value.contains("文化活动站")) ? value.replaceAll(xkh4, "文化活动站") : value.replaceAll(xkh4, "");
value = (value.contains(xkh5) && !value.contains("小学幼儿园")) ? value.replaceAll(xkh5, "小学幼儿园") : value.replaceAll(xkh5, "");
value = (value.contains(xkh6) && !value.contains("商店")) ? value.replaceAll(xkh6, "商店") : value.replaceAll(xkh6, "");
value = (value.contains(xkh7) && !value.contains("体育设施")) ? value.replaceAll(xkh7, "体育设施") : value.replaceAll(xkh7, "");
value = (value.contains(xkh8) && !value.contains("供电状况")) ? value.replaceAll(xkh8, "供电状况") : value.replaceAll(xkh8, "");
value = (value.contains(xkh9) && !value.contains("做饭燃料")) ? value.replaceAll(xkh9, "做饭燃料") : value.replaceAll(xkh9, "");
value = (value.contains(xkh10) && !value.contains("采暖")) ? value.replaceAll(xkh10, "采暖") : value.replaceAll(xkh10, "");
value = (value.contains(xkh11) && !value.contains("供水饮水")) ? value.replaceAll(xkh11, "供水饮水") : value.replaceAll(xkh11, "");
value = (value.contains(xkh12) && !value.contains("雨水排放沟渠")) ? value.replaceAll(xkh12, "雨水排放沟渠") : value.replaceAll(xkh12, "");
value = (value.contains(xkh13) && !value.contains("污水处理")) ? value.replaceAll(xkh13, "污水处理") : value.replaceAll(xkh13, "");
value = (value.contains(xkh14) && !value.contains("垃圾收集")) ? value.replaceAll(xkh14, "垃圾收集") : value.replaceAll(xkh14, "");
value = (value.contains(xkh15) && !value.contains("村庄照明")) ? value.replaceAll(xkh15, "村庄照明") : value.replaceAll(xkh15, "");
value = (value.contains(xkh16) && !value.contains("环境卫生条件")) ? value.replaceAll(xkh16, "环境卫生条件") : value.replaceAll(xkh16, "");
dto.setNzxwjkgsdxmasxpd(value);
} else if (no == 30) {
String startStr = "请根据重要程度排序";
//中间值,中间值之前的是填空,之后的是单选
String middleStr = "乓球等健身场所";
String endStr = "您希望村内设置何种室内活动场所";
String value = getTiankongOrDuiGou(wordContentPart3, startStr, endStr, middleStr);
value = value.replaceAll("、", "");
if (value.contains(circle1) && !value.contains("乓球等健身场所")) {
value = value.replaceAll(circle1, "乓球等健身场所;");
} else {
value = value.replaceAll(circle1, "");
}
if (value.contains(circle2) && !value.contains("棋牌室")) {
value = value.replaceAll(circle2, "棋牌室;");
} else {
value = value.replaceAll(circle2, "");
}
if (value.contains(circle3) && !value.contains("图书阅览室")) {
value = value.replaceAll(circle3, "图书阅览室;");
} else {
value = value.replaceAll(circle3, "");
}
if (value.contains(circle4) && !value.contains("多功能活动室")) {
value = value.replaceAll(circle4, "多功能活动室;");
} else {
value = value.replaceAll(circle4, "");
}
// value = value.replaceAll("[\\n]", "");
//todo 没看懂,让多选,为什么填对钩
Integer splitStartStrIndex = wordContentPart3.lastIndexOf(endStr);
wordContentPart3 = wordContentPart3.substring(splitStartStrIndex);
System.out.println("no" + no + ": " + value);
dto.setNxwcnszhzsnhdcs1(value);
} else if (no == 31) {
String startStr = "请根据重要程度排序";
//中间值,中间值之前的是填空,之后的是单选
String middleStr = "球类活动健身场所";
String endStr = "其他方面";
String value = getTiankongOrDuiGou(wordContentPart3, startStr, endStr, middleStr);
value = value.replaceAll("、", "");
if (value.contains(circle1) && !value.contains("球类活动健身场所")) {
value = value.replaceAll(circle1, "球类活动健身场所;");
} else {
value = value.replaceAll(circle1, "");
}
if (value.contains(circle2) && !value.contains("健身器材设施")) {
value = value.replaceAll(circle2, "健身器材设施;");
} else {
value = value.replaceAll(circle2, "");
}
if (value.contains(circle3) && !value.contains("小广场")) {
value = value.replaceAll(circle3, "小广场;");
} else {
value = value.replaceAll(circle3, "");
}
if (value.contains(circle4) && !value.contains("儿童活动场")) {
value = value.replaceAll(circle4, "儿童活动场;");
} else {
value = value.replaceAll(circle4, "");
}
// value = value.replaceAll("[\\n]", "");
//todo 没看懂,让多选,为什么填对钩
dto.setNxwcnszhzsnhdcs2(value);
System.out.println("no" + no + ": " + value);
} else {
Integer duigouIndex = wordContentPart3.indexOf(duigou);
String value = getDuigouAfterContent(wordContentPart3, duigouIndex);
wordContentPart3 = wordContentPart3.substring(duigouIndex + 1);
System.out.println("no" + no + ": " + value);
switch (no) {
case 25:
dto.setXzsfxyythwdpt(value);
break;
case 26:
dto.setXzsfyyaztynrsq(value);
break;
case 27:
dto.setXzsfyyjhfcclshfs(value);
break;
}
}
}
}
private static String getTiankongOrDuiGou(String contentPart3, String startStr, String endStr, String middleStr) {
String value = "";
int startIndex = contentPart3.indexOf(startStr) + startStr.length() + 1;
int endIndex = contentPart3.lastIndexOf(endStr) == -1 ? contentPart3.length() : contentPart3.lastIndexOf(endStr);
int middleIndex = contentPart3.indexOf(middleStr);
//填空的数据
// String tiankongContent = contentPart3.substring(startIndex,middleIndex);
value += getTianKongContent(contentPart3, startIndex, middleIndex);
//多选的数据
Map<String, String> duoxuanMap = getDuigouAfterDuoxuanContent(contentPart3, endIndex);
value += duoxuanMap.get("value");
return value;
}
private static String getXkhDurationContent(String wordContentPart3, String startFH, String endFH) {
Map<String, String> map = new HashMap<>(5);
int start = wordContentPart3.indexOf(startFH);
int end = wordContentPart3.indexOf(endFH);
String content = wordContentPart3.substring(start, end);
int rectIndex = content.indexOf(rect);
int duigouIndex = content.indexOf(duigou);
String title = content.substring(1, rectIndex - 1);
int count = 0;
for (int i = 0; i < duigouIndex; i++) {
String manyi = charToString(content.charAt(i));
if (rect.equals(manyi)) {
count++;
}
}
String isManyi = "没选";
if (count == 1) {
isManyi = "满意";
} else if (count == 2) {
isManyi = "不满意";
} else {
isManyi = "没选";
}
String reason = "";
int reasonStartIndex = content.lastIndexOf(t);
reason = content.substring(reasonStartIndex + 1);
reason = reason.replaceAll("[\\n]", "");
if (StrUtil.isNotBlank(reason)) {
isManyi += "(" + reason + ")";
}
System.out.println(title + " " + isManyi);
return isManyi;
}
private static void writePart2(String wordContentPart2, WordDTO dto) {
System.out.println("部分2");
for (int no = 10; no <= 23; no++) {
//填空
if (no == 18) {
// 19.您家的确权耕地有 1 亩
Map<String, String> value19Map = get19Value(wordContentPart2);
String value19 = value19Map.get("value");
wordContentPart2 = value19Map.get("content") != null ? value19Map.get("content") : wordContentPart2;
System.out.println("no" + no + ": " + value19);
dto.setNjdqgdy(value19);
} else if (no == 19) {
// 20.您家转让给其他农户耕种的土地有 1 亩;是否收钱,每亩 300 元。
Map<String, String> value20_1Map = get20_1Value(wordContentPart2);
String value20_1 = value20_1Map.get("value");
wordContentPart2 = value20_1Map.get("content") != null ? value20_1Map.get("content") : wordContentPart2;
dto.setNjzrgqtnhgzdtdy(value20_1);
Map<String, String> value20_2Map = get20_2Value(wordContentPart2);
String value20_2 = value20_2Map.get("value");
wordContentPart2 = value20_2Map.get("content") != null ? value20_2Map.get("content") : wordContentPart2;
System.out.println("no" + no + ": " + value20_1 + " " + value20_2);
dto.setNjzrgqtnhgzdtdsfsq(value20_2);
} else if (no == 20) {
// 21.您家耕种其他农户转交的土地有 亩;是否收钱,每亩 元。
Map<String, String> value21_1Map = get21_1Value(wordContentPart2);
String value21_1 = value21_1Map.get("value");
wordContentPart2 = value21_1Map.get("content") != null ? value21_1Map.get("content") : wordContentPart2;
dto.setNjgzqtnhzjdtdy(value21_1);
Map<String, String> value21_2Map = get21_2Value(wordContentPart2);
String value21_2 = value21_2Map.get("value");
wordContentPart2 = value21_2Map.get("content") != null ? value21_2Map.get("content") : wordContentPart2;
dto.setNjgzqtnhzjdtdsfsq(value21_2);
System.out.println("no" + no + ": " + value21_1 + " " + value21_2);
} else if (no == 23) {
//多选
String endStr = "三";
Integer endIndex = wordContentPart2.indexOf(endStr);
Map<String, String> value24Map = getDuigouAfterDuoxuanContent(wordContentPart2, endIndex);
String value = value24Map.get("value");
wordContentPart2 = value24Map.get("content") != null ? value24Map.get("content") : wordContentPart2;
dto.setJcjxdxxhdnr(value);
System.out.println("no" + no + ": " + value);
} else {
Integer duigouIndex = wordContentPart2.indexOf(duigou);
String value = getDuigouAfterContent(wordContentPart2, duigouIndex);
wordContentPart2 = wordContentPart2.substring(duigouIndex + 1);
System.out.println("no" + no + ": " + value);
switch (no) {
case 10:
dto.setXyzzjsnd(value);
break;
case 11:
dto.setXyzztzjly(value);
break;
case 12:
dto.setXyzzdzj(value);
break;
case 13:
dto.setXyzzylmj(value);
break;
case 14:
dto.setXyzzzmj(value);
break;
case 15:
dto.setXyzzfjsl(value);
break;
case 16:
dto.setWsjqk(value);
break;
case 17:
dto.setZzdjzyqnfs(value);
break;
case 21:
dto.setPsczjzzdnhddybxydcsj(value);
break;
case 22:
dto.setNxsmtpjxxsj(value);
break;
}
}
}
}
private static Map<String, String> get21_1Value(String wordContentPart2) {
String startStr = "您家耕种其他农户转交的土地有";
String endStr = "亩";
return getTianKongContentByStr(wordContentPart2, startStr, endStr);
}
private static Map<String, String> get21_2Value(String wordContentPart2) {
String startStr = "每亩";
String endStr = "元";
return getTianKongContentByStr(wordContentPart2, startStr, endStr);
}
private static Map<String, String> get19Value(String wordContentPart2) {
String startStr = "您家的确权耕地有";
String endStr = "亩";
return getTianKongContentByStr(wordContentPart2, startStr, endStr);
}
private static Map<String, String> get20_1Value(String wordContentPart2) {
String startStr = "转让给其他农户耕种的土地有";
String endStr = "亩";
return getTianKongContentByStr(wordContentPart2, startStr, endStr);
}
private static Map<String, String> get20_2Value(String wordContentPart2) {
String startStr = "每亩";
String endStr = "元";
return getTianKongContentByStr(wordContentPart2, startStr, endStr);
}
private static void writePart1(String wordContentPart1, WordDTO dto) {
System.out.println("部分1");
for (int no = 1; no <= 9; no++) {
Integer duigouIndex = wordContentPart1.indexOf(duigou);
//第10项是填空
if (no == 9) {
String wcwgljyc = "外出务工累计月次";
String gy = "个月";
String zywgqx = "主要务工去向";
String zycsgz = "主要从事工作";
Integer wcwgljycIndex = wordContentPart1.indexOf(wcwgljyc);
Integer gyIndex = wordContentPart1.indexOf(gy);
Integer gyStart = wcwgljycIndex + 9;
Integer gyEnd = gyIndex;
String gyValue = getTianKongContent(wordContentPart1, gyStart, gyEnd);
dto.setNjtwcwgljyc(gyValue);
System.out.println(wcwgljyc + " " + gyValue);
// for (int j = gyStart; j < gyEnd; j++) {
// String fh = charToString(wordContentPart1.charAt(j));
// if (blank.equals(fh) || xhx.equals(fh) || br.equals(fh)) {
// continue;
// }
// gyValue += fh;
// }
wordContentPart1 = wordContentPart1.substring(gyEnd + 3);
Integer zywgqxIndex = wordContentPart1.indexOf(zywgqx);
Integer douhaoIndex = wordContentPart1.indexOf(douhao);
Integer zywgqxIndexStart = zywgqxIndex + 7;
String zywgqxValue = getTianKongContent(wordContentPart1, zywgqxIndexStart, douhaoIndex);
System.out.println(zywgqx + " " + zywgqxValue);
dto.setZywgqx(zywgqxValue);
wordContentPart1 = wordContentPart1.substring(douhaoIndex + 1);
Integer zycsgzIndex = wordContentPart1.indexOf(zycsgz);
Integer juhaohaoIndex = wordContentPart1.indexOf(juhao);
Integer zycsgzIndexStart = zycsgzIndex + 7;
String zycsgzValue = getTianKongContent(wordContentPart1, zycsgzIndexStart, juhaohaoIndex);
System.out.println(zycsgz + " " + zycsgzValue);
dto.setZycsgz(zycsgzValue);
// 外出务工累计月次: 个月
// 主要务工去向: ,
// 主要从事工作: 。
} else {
//其余是打√
String value = getDuigouAfterContent(wordContentPart1, duigouIndex);
wordContentPart1 = wordContentPart1.substring(duigouIndex + 1);
System.out.println("no" + no + ": " + value);
switch (no) {
case 1:
dto.setAge(value);
break;
case 2:
dto.setSex(value);
break;
case 3:
dto.setEdu(value);
break;
case 4:
dto.setMqzy(value);
break;
case 5:
dto.setNdsrqk(value);
break;
case 6:
dto.setNxydzftj(value);
break;
case 7:
dto.setNrwzajtjjzzdyy(value);
break;
case 8:
dto.setPsnhqk(value);
break;
}
}
}
}
private static String charToString(char c) {
String specialFH = String.valueOf(c);
return specialFH;
}
private static String getTianKongContent(String content, Integer start, Integer end) {
String value = "";
for (int j = start; j < end; j++) {
String fh = charToString(content.charAt(j));
if (blank.equals(fh) || xhx.equals(fh) || br.equals(fh)) {
continue;
}
value += fh;
}
return value;
}
/**
* 取startStr +1 到 endStr之间的字符串,
*
* @param content
* @param startStr
* @param endStr
* @return map
* key value
* vaule 截取到底值
* content 截取后的字符串
*/
private static Map<String, String> getTianKongContentByStr(String content, String startStr, String endStr) {
Map<String, String> map = new HashMap<>(5);
Integer startIndex = content.indexOf(startStr);
Integer end = content.indexOf(endStr);
Integer start = startIndex + startStr.length() + 1;
String value = "";
for (int j = start; j < end; j++) {
String fh = charToString(content.charAt(j));
if (blank.equals(fh) || xhx.equals(fh) || br.equals(fh)) {
continue;
}
value += fh;
}
if (end != null) {
content = content.substring(end + 1);
map.put("content", content);
}
map.put("value", value);
return map;
}
/**
* 获取对号 到 对号之前的第一个特殊符号 之间的内容
*
* @param content
* @param duigouIndex
* @return
*/
private static String getDuigouAfterContent(String content, Integer duigouIndex) {
String value = "";
Integer end = duigouIndex;
while (end != null && end > 0) {
String specialFH = charToString(content.charAt(end));
if (breakFH.contains(specialFH)) {
//对号的前一位,如果前一位是符号,则截取掉,不是符号则不动
char afterOneIndex = content.charAt(duigouIndex - 1);
String afterOneStr = String.valueOf(afterOneIndex);
Integer endIndex = duigouIndex;
if (fenhao.equals(afterOneStr)) {
endIndex = endIndex - 1;
}
value = content.substring(end + 1, endIndex);
break;
}
end--;
}
return value;
}
/**
* @param content 内容
* @param endIndex 结束位
* @return
*/
private static Map<String, String> getDuigouAfterDuoxuanContent(String content, Integer endIndex) {
Map<String, String> map = new HashMap<>(5);
String value = "";
Integer duigouIndex = content.indexOf(duigou);
while (duigouIndex > 0) {
value += getDuigouAfterContent(content, duigouIndex) + ";";
content = content.substring(duigouIndex + 1);
//结束的减去上一行截取掉的字符数量
endIndex = endIndex - duigouIndex + 1;
duigouIndex = content.indexOf(duigou);
if (duigouIndex > endIndex && endIndex != -1) {
break;
}
}
map.put("content", content);
map.put("value", value);
return map;
}
}
//
//填写人年龄
//填写人性别
//受教育程度
//目前职业
//您的收入情况
//您现有的住房条件如何,近期内是否有修缮房屋或搬离现居住地
//您认为阻碍家庭经济增长的原因
//平时农活情况
//您家庭外出务工累计月次
//主要务工去向
//主要从事工作
//
//现有住宅建设年代
//现有住宅投资金来源
//现有住宅的造价
//现有住宅院落面积
//现有住宅总面积
//现有住宅房间数量
//卫生间情况
//住宅冬季主要取暖方式
//您家的确权耕地有(亩)
//您家转让给其他农户耕种的土地有(亩)
//您家转让给其他农户耕种的土地是否收钱,每亩(元)
//您家耕种其他农户转交的土地有(亩)
//您家耕种其他农户转交的土地有是否收钱,每亩(元)
//平时从自家住宅到农活地点一般需要多长时间
//农闲时每天平均休闲时间
//经常进行的休闲活动内容
//
//您希望新宅的建筑形式
//新宅是否需要阳台或屋顶平台
//新宅是否愿意安装太阳能热水器
//新宅是否愿意建化粪池处理生活污水
//道路状况
//停车设施
//医疗站
//文化活动站
//小学幼儿园
//商店
//体育设施
//供电状况
//做饭燃料
//采暖
//供水饮水
//雨水排放沟渠
//污水处理
//垃圾收集
//村庄照明
//环境卫生条件
//您最希望尽快改善的项目按顺序排队
//您希望村内设置何种室内活动场所
//您希望村内设置何种室内活动场所
//
//如果将来村庄进行集中整治,在本村以外的其他地方统一建新宅,您是否愿意放弃目前的住宅并获得相应的现金补偿
//您是否赞成通过股份等形式,由集体统一经营本村土地或其他公公资产
//您对本村目前具有长久历史的古树、古建筑、历史事件等情况,了解程度?
//其他的意见和建议
/*
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.directory.studio</groupId>
<artifactId>org.apache.commons.codec</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.12</version>
</dependency>*/
package io.visi.sister;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import lombok.Data;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: keliang
* @Date: 2021/10/1 09:12
*/
@HeadRowHeight(100)
@ColumnWidth(15)
@Data
public class WordDTO {
@ExcelProperty(value = "文件名字", index = 0)
private String docName;
@ExcelProperty(value = "填写人年龄", index = 1)
private String age;
@ExcelProperty(value = "填写人性别", index = 2)
private String sex;
@ExcelProperty(value = "受教育程度", index = 3)
private String edu;
@ExcelProperty(value = "目前职业", index = 4)
private String mqzy;
@ExcelProperty(value = "您的收入情况", index = 5)
private String ndsrqk;
@ExcelProperty(value = "您现有的住房条件如何,近期内是否有修缮房屋或搬离现居住地", index = 6)
private String nxydzftj;
@ExcelProperty(value = "您认为阻碍家庭经济增长的原因", index = 7)
private String nrwzajtjjzzdyy;
@ExcelProperty(value = "平时农活情况", index = 8)
private String psnhqk;
@ExcelProperty(value = "您家庭外出务工累计月次", index = 9)
private String njtwcwgljyc;
@ExcelProperty(value = "主要务工去向", index = 10)
private String zywgqx;
@ExcelProperty(value = "主要从事工作", index = 11)
private String zycsgz;
@ExcelProperty(value = "现有住宅建设年代", index = 12)
private String xyzzjsnd;
@ExcelProperty(value = "现有住宅投资金来源", index = 13)
private String xyzztzjly;
@ExcelProperty(value = "现有住宅的造价", index = 14)
private String xyzzdzj;
@ExcelProperty(value = "现有住宅院落面积", index = 15)
private String xyzzylmj;
@ExcelProperty(value = "现有住宅总面积", index = 16)
private String xyzzzmj;
@ExcelProperty(value = "现有住宅房间数量", index = 17)
private String xyzzfjsl;
@ExcelProperty(value = "卫生间情况", index = 18)
private String wsjqk;
@ExcelProperty(value = "住宅冬季主要取暖方式", index = 19)
private String zzdjzyqnfs;
@ExcelProperty(value = "您家的确权耕地有(亩)", index = 20)
private String njdqgdy;
@ExcelProperty(value = "您家转让给其他农户耕种的土地有", index = 21)
private String njzrgqtnhgzdtdy;
@ExcelProperty(value = "您家转让给其他农户耕种的土地是否收钱", index = 22)
private String njzrgqtnhgzdtdsfsq;
@ExcelProperty(value = "您家耕种其他农户转交的土地有", index = 23)
private String njgzqtnhzjdtdy;
@ExcelProperty(value = "您家耕种其他农户转交的土地有是否收钱", index = 24)
private String njgzqtnhzjdtdsfsq;
@ExcelProperty(value = "平时从自家住宅到农活地点一般需要多长时间", index = 25)
private String psczjzzdnhddybxydcsj;
@ExcelProperty(value = "农闲时每天平均休闲时间", index = 26)
private String nxsmtpjxxsj;
@ExcelProperty(value = "经常进行的休闲活动内容", index = 27)
private String jcjxdxxhdnr;
@ExcelProperty(value = "您希望新宅的建筑形式", index = 28)
private String nxwxzdjzxs;
@ExcelProperty(value = "新宅是否需要阳台或屋顶平台", index = 29)
private String xzsfxyythwdpt;
@ExcelProperty(value = "新宅是否愿意安装太阳能热水器", index = 30)
private String xzsfyyaztynrsq;
@ExcelProperty(value = "新宅是否愿意建化粪池处理生活污水", index = 31)
private String xzsfyyjhfcclshfs;
@ExcelProperty(value = "道路状况", index = 32)
private String dlzk;
@ExcelProperty(value = "停车设施", index = 33)
private String tcss;
@ExcelProperty(value = "医疗站", index = 34)
private String ylz;
@ExcelProperty(value = "文化活动站", index = 35)
private String whhdz;
@ExcelProperty(value = "小学幼儿园", index = 36)
private String xxyey;
@ExcelProperty(value = "商店", index = 37)
private String sd;
@ExcelProperty(value = "体育设施", index = 38)
private String tyss;
@ExcelProperty(value = "供电状况", index = 39)
private String gdzk;
@ExcelProperty(value = "做饭燃料", index = 40)
private String zfrl;
@ExcelProperty(value = "采暖", index = 41)
private String cn;
@ExcelProperty(value = "供水饮水", index = 42)
private String gsys;
@ExcelProperty(value = "雨水排放沟渠", index = 43)
private String yspfgq;
@ExcelProperty(value = "污水处理", index = 44)
private String wscl;
@ExcelProperty(value = "垃圾收集", index = 45)
private String ljsj;
@ExcelProperty(value = "村庄照明", index = 46)
private String czzm;
@ExcelProperty(value = "环境卫生条件", index = 47)
private String hjwstj;
@ExcelProperty(value = "您最希望尽快改善的项目按顺序排队", index = 48)
private String nzxwjkgsdxmasxpd;
@ExcelProperty(value = "您希望村内设置何种室内活动场所", index = 49)
private String nxwcnszhzsnhdcs1;
@ExcelProperty(value = "您希望村内设置何种室内活动场所", index = 50)
private String nxwcnszhzsnhdcs2;
@ExcelProperty(value = "如果将来村庄进行集中整治,在本村以外的其他地方统一建新宅,您是否愿意放弃目前的住宅并获得相应的现金补偿", index = 51)
private String rgjlczjxjzzzzbcywdqtdftyjxznsfyyfqmqdzzbhdxydxjbc;
@ExcelProperty(value = "您是否赞成通过股份等形式,由集体统一经营本村土地或其他公公资产", index = 52)
private String nsfzzctggfdxsyjttyjybctdhqtggzc;
@ExcelProperty(value = "您对本村目前具有长久历史的古树、古建筑、历史事件等情况,了解程度?", index = 53)
private String ndbcmqzycjlsdgsgjzlssjdqkljcd;
@ExcelProperty(value = "其他的意见和建议", index = 54)
private String qtdyjhjy;
// @ExcelProperty(value = "", index = 55)
// private String edu;
// @ExcelProperty(value = "", index = 56)
// private String edu;
// @ExcelProperty(value = "", index = 57)
// private String edu;
// @ExcelProperty(value = "", index = 58)
// private String edu;
// @ExcelProperty(value = "", index = 59)
// private String edu;
public static void main(String[] args) {
// String fileName = "/Users/keliang/test/sister/ok/ok.xlsx";
// EasyExcel.write(fileName,WordDTO.class).sheet("数据").doWrite(getData());
String s = "a s";
String[] sp = s.split(" ");
int r = sp.length;
System.out.println(r);
// String fileDir = "/Users/keliang/test/sister/红太村调查/";
//
// File file = new File(fileDir);
// File[] fileList = file.listFiles();
// for (int i = 0; i <fileList.length ; i++) {
// if (fileList[i].isFile()){
// System.out.println(fileList[i].toString());
// }
// }
}
private static List<WordDTO> getData() {
List<WordDTO> list = new ArrayList<>();
WordDTO wordDTO = new WordDTO();
wordDTO.setAge("11");
wordDTO.setDocName("1.doc");
wordDTO.setEdu("小学");
list.add(wordDTO);
WordDTO wordDTO2 = new WordDTO();
wordDTO2.setAge("2");
wordDTO2.setDocName("2.doc");
wordDTO2.setEdu("小学");
list.add(wordDTO2);
return list;
}
}
// <dependency>
// <groupId>com.alibaba</groupId>
// <artifactId>easyexcel</artifactId>
// <version>3.0.0-beta3</version>
// </dependency>