摘要:代碼結構所需依賴數據庫表設計話不多說,先放代碼取當前字段的下標把文件讀取到流文件讀取轉化為段落格式文件去掉空的段落取數組長度獲得天氣預報的時間和判斷是否包含和封裝保存此段代碼步驟首先解析文檔,以段落的形式讀取文檔
springBoot代碼結構:
所需pom依賴
數據庫表設計
話不多說,先放代碼:MeteorologicalService
public void testReadByDoc(String path) throws Exception { Meteorological meteorological = new Meteorological(); String [] content =null; //取當前.字段的下標 int i = path.indexOf("."); //把文件讀取到流 InputStream is = new FileInputStream(path); if(path.length()-i==4){ //doc文件 HWPFDocument doc = new HWPFDocument(is); Range range = doc.getRange(); //讀取word 轉化為段落格式 content =MeteorologicalUtil.printInfo(range); }else { // docx 文件 XWPFDocument xdoc = new XWPFDocument(is); content =MeteorologicalUtil.printInfox(xdoc); } //去掉空的段落 String[] contenta = MeteorologicalUtil.removeArrayEmptyTextBackNewArray(content); //取數組長度 int len =contenta.length; Date time = MeteorologicalUtil.getTime(contenta); //獲得天氣預報的時間 String s = contenta[len - 6]; if(s.contains("和")){ //判斷是否包含和 meteorological.setAlert(contenta[len-5]); meteorological.setWeather(contenta[len-4]); } String minimum = contenta[len - 1].substring(0, contenta[len - 1].length() - 1); String maximum = contenta[len - 2].substring(0, contenta[len - 2].length() - 1); String windforce = contenta[len - 3].substring(0, contenta[len - 3].length() - 1); meteorological.setWeather(contenta[len-4]); meteorological.setMaximum(maximum); meteorological.setMinimum(minimum); meteorological.setNowtime(time); meteorological.setWindforce(windforce); meteorologicalMapper.insert(meteorological); //封裝、保存 is.close(); }
此段代碼步驟:
首先解析word文檔,以段落的形式讀取文檔中內容,此時拿到word文檔中信息。
由于文檔中可能會出現空格和回車影響我們根據段落處理文檔,所以我們此時需要先去掉這些可能會對我們代碼產生的影響(部分代碼等下貼)
此時去重部分已經解決,這時我們可以根據我們得到的數據進行下一步處理(處理代碼也等下貼)
解決完成后將得到的數據放到對象中,然后存到數據庫
因為還有定時任務(spring自帶的定時器)所以我們需要再加個定時器,好了 話不多說,現在開始貼處理代碼。
因為代碼問題,所以將一些方法提到了util工具類
public class MeteorologicalUtil { public static String [] printInfo(Range range) { //獲取段落數 int paraNum = range.numParagraphs(); String [] paragraphArr =new String[paraNum]; for (int i=0; iparagraphs = xwpfDocument.getParagraphs(); for(int i =0 ;i strList= Arrays.asList(strArray); List strListNew=new ArrayList<>(); for (int i = 0; i 好了,代碼已經放上去了,這時候我們就需要加上定時器了(此定時器因為是spring自帶的,所以比較簡單易懂)
@Configuration //聲明是一個配置類 @EnableScheduling //開啟定時任務 public class MeteorologicalTask { @Autowired MeteorologicalService meteorologicalService; // @Scheduled(cron = "0 0 1 * * ?") //執行周期(每天凌晨一點執行)(不知道定時時間怎么處理,可以網上看一下 cron) @Scheduled(cron = "*/5 * * * * ?")//每5秒執行一次 public void work() { //文件路徑 File file = new File("C:Usersqps12Desktop氣象局2"); //獲得文件夾下所有文件或者文件夾 File[] fileList = file.listFiles(); for (int i = 0; i < fileList.length; i++) { if (fileList[i].isFile()) { //只檢查文件.并且遍歷 File currentFile = fileList[i]; String path = currentFile.getAbsolutePath(); //當前文件的絕對路徑 try { meteorologicalService.testReadByDoc(path); //執行解析、封裝、保存數據 } catch (Exception e) { e.printStackTrace(); return; } currentFile.delete(); //刪除文件 } } }}
注:此方法只適用于那種格式類型幾乎一致的文檔處理,如果想處理一些沒有規則的文檔,最好還是使用模糊匹配的方法(還沒研究,所以不會 哈哈),另外貼一下,我自己處理的文檔:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75884.html
時間:2017年07月06日星期四說明:本文部分內容均來自慕課網。@慕課網:http://www.imooc.com教學源碼:無學習源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 預備知識 基礎知識 struts2框架(上傳下載功能) xml解析技術(導入模板) JQuery EasyUI(前臺美觀) 課程目錄 實現方式 定制導入模版 導入文件 導...
摘要:相信使用的目前已經非常多了,我這邊提供一個非常簡單便利又通用的解析工具類,代碼最后有示例代碼。可以按照本文直接使用。 相信使用POI的目前已經非常多了,我這邊提供一個非常簡單便利又通用的POI解析工具類,代碼最后有示例代碼。可以按照本文直接使用。 import java.io.FileInputStream; import java.io.FileNotFoundException; ...
摘要:并且在對的抽象中,每一行,每一個單元格都是一個對象。對支持使用官方例子需要繼承,覆蓋方法,每讀取到一個單元格的數據則會回調次方法。概要Java對Excel的操作一般都是用POI,但是數據量大的話可能會導致頻繁的FGC或OOM,這篇文章跟大家說下如果避免踩POI的坑,以及分別對于xls和xlsx文件怎么優化大批量數據的導入和導出。一次線上問題這是一次線上的問題,因為一個大數據量的Excel導出...
摘要:需要的技術框架利用其上傳下載功能解析技術定制導入模板制作前臺與格式對應,版本低,兼容性好與格式對應組成的幾個概念工作薄工作表行記錄單元格創建中的的詳見如創建創建工作簿創建工作表創建第一行創建一個文件存盤名字性別男解析文件創建,讀取文件 需要的技術 1、strut2框架 利用其上傳下載功能2、xml解析技術 定制導入模板3、jquery UI 制作前臺 4、showImg(/i...
閱讀 1395·2021-11-08 13:14
閱讀 747·2021-09-23 11:31
閱讀 1039·2021-07-29 13:48
閱讀 2782·2019-08-29 12:29
閱讀 3372·2019-08-29 11:24
閱讀 1900·2019-08-26 12:02
閱讀 3690·2019-08-26 10:34
閱讀 3435·2019-08-23 17:07