成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

poi讀取word.doc/docx 解析,定時(shí)入庫

QiShare / 3400人閱讀

摘要:代碼結(jié)構(gòu)所需依賴數(shù)據(jù)庫表設(shè)計(jì)話不多說,先放代碼取當(dāng)前字段的下標(biāo)把文件讀取到流文件讀取轉(zhuǎn)化為段落格式文件去掉空的段落取數(shù)組長(zhǎng)度獲得天氣預(yù)報(bào)的時(shí)間和判斷是否包含和封裝保存此段代碼步驟首先解析文檔,以段落的形式讀取文檔

springBoot代碼結(jié)構(gòu):

所需pom依賴

數(shù)據(jù)庫表設(shè)計(jì)

話不多說,先放代碼:MeteorologicalService

public  void testReadByDoc(String path) throws Exception {
    Meteorological meteorological = new Meteorological();
    String [] content =null;
    //取當(dāng)前.字段的下標(biāo)
    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 轉(zhuǎn)化為段落格式
        content =MeteorologicalUtil.printInfo(range);
    }else {          // docx 文件
        XWPFDocument xdoc = new XWPFDocument(is);
        content =MeteorologicalUtil.printInfox(xdoc);
    }
    //去掉空的段落
    String[] contenta = MeteorologicalUtil.removeArrayEmptyTextBackNewArray(content);  
   //取數(shù)組長(zhǎng)度
    int len =contenta.length;
    Date time = MeteorologicalUtil.getTime(contenta);  //獲得天氣預(yù)報(bào)的時(shí)間
    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文檔,以段落的形式讀取文檔中內(nèi)容,此時(shí)拿到word文檔中信息。
由于文檔中可能會(huì)出現(xiàn)空格和回車影響我們根據(jù)段落處理文檔,所以我們此時(shí)需要先去掉這些可能會(huì)對(duì)我們代碼產(chǎn)生的影響(部分代碼等下貼)
此時(shí)去重部分已經(jīng)解決,這時(shí)我們可以根據(jù)我們得到的數(shù)據(jù)進(jìn)行下一步處理(處理代碼也等下貼)
解決完成后將得到的數(shù)據(jù)放到對(duì)象中,然后存到數(shù)據(jù)庫
因?yàn)檫€有定時(shí)任務(wù)(spring自帶的定時(shí)器)所以我們需要再加個(gè)定時(shí)器,好了 話不多說,現(xiàn)在開始貼處理代碼。

因?yàn)榇a問題,所以將一些方法提到了util工具類

public class MeteorologicalUtil {
public static  String []  printInfo(Range range) {
    //獲取段落數(shù)
    int paraNum = range.numParagraphs();
    String [] paragraphArr =new String[paraNum];
    for (int i=0; i paragraphs = xwpfDocument.getParagraphs();
    for(int i =0 ;i strList= Arrays.asList(strArray);
    List strListNew=new ArrayList<>();

    for (int i = 0; i 

好了,代碼已經(jīng)放上去了,這時(shí)候我們就需要加上定時(shí)器了(此定時(shí)器因?yàn)槭莝pring自帶的,所以比較簡(jiǎn)單易懂)

@Configuration //聲明是一個(gè)配置類
@EnableScheduling //開啟定時(shí)任務(wù)
public class MeteorologicalTask {

@Autowired
MeteorologicalService meteorologicalService;

//    @Scheduled(cron = "0 0 1 * * ?")  //執(zhí)行周期(每天凌晨一點(diǎn)執(zhí)行)(不知道定時(shí)時(shí)間怎么處理,可以網(wǎng)上看一下 cron)
@Scheduled(cron = "*/5 * * * * ?")//每5秒執(zhí)行一次
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();  //當(dāng)前文件的絕對(duì)路徑
            try {
                meteorologicalService.testReadByDoc(path);  //執(zhí)行解析、封裝、保存數(shù)據(jù)
            } catch (Exception e) {
                e.printStackTrace();
                return;
            }
            currentFile.delete();   //刪除文件
        }
    }
}

}
注:此方法只適用于那種格式類型幾乎一致的文檔處理,如果想處理一些沒有規(guī)則的文檔,最好還是使用模糊匹配的方法(還沒研究,所以不會(huì) 哈哈),另外貼一下,我自己處理的文檔:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75884.html

相關(guān)文章

  • 慕課網(wǎng)_《解密JAVA實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出》學(xué)習(xí)總結(jié)

    時(shí)間:2017年07月06日星期四說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 預(yù)備知識(shí) 基礎(chǔ)知識(shí) struts2框架(上傳下載功能) xml解析技術(shù)(導(dǎo)入模板) JQuery EasyUI(前臺(tái)美觀) 課程目錄 實(shí)現(xiàn)方式 定制導(dǎo)入模版 導(dǎo)入文件 導(dǎo)...

    enrecul101 評(píng)論0 收藏0
  • 簡(jiǎn)單好用-JAVA使用POI解析Excel

    摘要:相信使用的目前已經(jīng)非常多了,我這邊提供一個(gè)非常簡(jiǎn)單便利又通用的解析工具類,代碼最后有示例代碼??梢园凑毡疚闹苯邮褂谩? 相信使用POI的目前已經(jīng)非常多了,我這邊提供一個(gè)非常簡(jiǎn)單便利又通用的POI解析工具類,代碼最后有示例代碼。可以按照本文直接使用。 import java.io.FileInputStream; import java.io.FileNotFoundException; ...

    wangjuntytl 評(píng)論0 收藏0
  • Excel大批量數(shù)據(jù)的導(dǎo)入和導(dǎo)出,如何做優(yōu)化?

    摘要:并且在對(duì)的抽象中,每一行,每一個(gè)單元格都是一個(gè)對(duì)象。對(duì)支持使用官方例子需要繼承,覆蓋方法,每讀取到一個(gè)單元格的數(shù)據(jù)則會(huì)回調(diào)次方法。概要Java對(duì)Excel的操作一般都是用POI,但是數(shù)據(jù)量大的話可能會(huì)導(dǎo)致頻繁的FGC或OOM,這篇文章跟大家說下如果避免踩POI的坑,以及分別對(duì)于xls和xlsx文件怎么優(yōu)化大批量數(shù)據(jù)的導(dǎo)入和導(dǎo)出。一次線上問題這是一次線上的問題,因?yàn)橐粋€(gè)大數(shù)據(jù)量的Excel導(dǎo)出...

    Tecode 評(píng)論0 收藏0
  • Java實(shí)現(xiàn)excel導(dǎo)入導(dǎo)出學(xué)習(xí)筆記1 - 實(shí)現(xiàn)方式

    摘要:需要的技術(shù)框架利用其上傳下載功能解析技術(shù)定制導(dǎo)入模板制作前臺(tái)與格式對(duì)應(yīng),版本低,兼容性好與格式對(duì)應(yīng)組成的幾個(gè)概念工作薄工作表行記錄單元格創(chuàng)建中的的詳見如創(chuàng)建創(chuàng)建工作簿創(chuàng)建工作表創(chuàng)建第一行創(chuàng)建一個(gè)文件存盤名字性別男解析文件創(chuàng)建,讀取文件 需要的技術(shù) 1、strut2框架 利用其上傳下載功能2、xml解析技術(shù) 定制導(dǎo)入模板3、jquery UI 制作前臺(tái) 4、showImg(/i...

    wean 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<