Java POI 生成“暑假幼小銜接測試卷” word文檔

1.題型參考

2.應用題題庫參考

3.代碼

計算方式枚舉

public enum NormalSumType {
    //加法
    Addition,
    //減法
    Subtraction
}

工具類

import cn.hutool.core.util.RandomUtil;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class TopicUtil {

    public static final List<String> Photos = Arrays.asList("?", "?", "?", "?", "?", "?", "?", "★", "?", "?", "?", "?", "?", "?");
    public static final List<String> ApplicationTopicList = Arrays.asList(
            "同學們要做28個燈籠,已做好18個,還要做多少個?",
            "從花上飛走了36只蝴蝶淋淀,又飛走了25只捕捂,兩次飛走了多少只交掏?",
            "飛機場上有75架飛機狱从,飛走了63架铐殃,現在機場上有飛機多少架剂府?",
            "小蘋種7盆紅花,又種了同樣多的黃花慰照,兩種花共多少盆灶挟?",
            "學校原有25瓶膠水,又買回19瓶毒租,現在有多少瓶稚铣?",
            "小強家有36個蘋果,吃了7個,還有多少個惕医?",
            "汽車總站有33輛汽車耕漱,開走了13輛,還有幾輛抬伺?",
            "小朋友做剪紙 螟够,用了8張紅紙,又用了同樣多的黃紙峡钓,他們用了多少張紙妓笙?",
            "馬場上有39匹馬,又來了52匹椒楣,現在馬場上有多少匹给郊?",
            "商店有25把扇牡肉,賣去16把捧灰,現在有多少把?",
            "學校有蘭花和菊花共65盆统锤,蘭花有26盆毛俏,菊花有幾盆?",
            "小青兩次畫了17個 饲窿,第一次畫了9個煌寇,第二次畫了多少個?",
            "小紅家有蘋果和梨子共33個逾雄,蘋果有14個阀溶,梨子有多少個?",
            "學校要把42箱文具送給山區(qū)小學鸦泳,已送去27箱银锻,還要送幾箱?",
            "家有11棵白菜做鹰,吃了5棵击纬,還有幾棵?",
            "一條馬路兩旁各種上48棵樹钾麸,一共種樹多少棵更振?",
            "從車場開走8輛汽車,還剩24輛饭尝,車場原來有多少汽車肯腕?",
            "從車場開走8輛大汽車,又開走同樣多的小汽車钥平,兩次開走多少輛汽車大审?",
            "學校體育室有6個足球 ,又買來26個坎匿,現在有多少個?",
            "學雷鋒小組上午修了8張椅吭净,下午修了9張,一天修了多少張椅肴甸?",
            "原來有22人看戲寂殉,來了13人,又走了6人原在,現在看戲的有多少人友扰?",
            "面包房做了54個面包,第一組買了22個庶柿,第二組買了8個村怪,還剩多少個?",
            "男生有22人浮庐,女生有21人甚负,其中有16人參加比賽,還有多少人沒參加审残?",
            "三個小組一共收集了94個礦泉水瓶梭域,第一組收集了34個,第二組收集了29個搅轿,第三組收集了多少個病涨?",
            "汽車里有41人,中途有13人上車璧坟,9人下車既穆,車上現在還有多少人?",
            "小紅有28個氣球雀鹃,送給幼兒園小朋友15個幻工,還剩多少個?",
            "小軍和小麗做燈籠褐澎,小軍做了21個会钝,小麗做了18個,送給老師50個工三,他們還要做多少個迁酸?",
            "故事書有74頁,小麗第一天看了20頁俭正,第二天看了23頁奸鬓,還剩多少頁沒有看?",
            "羊圈里原來有58只羊掸读,先走了6只串远,又走了7只宏多,現在還有多少只?",
            "小東上午做了10道數學題澡罚,下午做的比上午多3道伸但,小東下午做了多少道?",
            "小紅看故事書留搔,第一天看了15頁更胖,第二天看的比第一天少6頁,第二天看了多少頁隔显?",
            "爸爸却妨、媽媽和哥哥都掰了9個玉米,我掰了6個括眠,我們家一共掰了多少個玉米彪标?",
            "小明種了5行蘿卜,每行9個掷豺,共種了多少個捞烟?",
            "食堂運來3車大米,每車8袋萌业,3車共多少袋坷襟?",
            "我有50元奸柬,要買一件20元的衣服和一副10元的眼鏡生年,還剩多少元?",
            "學校有50個面包廓奕,每個學生分9個抱婉,可以分給多少個學生?",
            "爸爸買了4捆木頭桌粉,每捆12根蒸绩,全部共多少根?",
            "媽媽給了小明50元錢铃肯,小明要買一本數學書20元患亿,還要買一個文具盒21元,媽媽給的錢夠嗎押逼?",
            "一艘船可以載60人步藕,一年級有21人,二年級有22人挑格,三年級有15人咙冗,三個班的人夠坐嗎?",
            "小明家有5張桌子漂彤,每張桌子夠坐8人雾消,他們家可以請多少人來做客灾搏?",
            "小紅家有4塊地,每塊地里可以種20課菜立润,小紅家共種了多少棵白菜狂窑?",
            "學校共有38個籃球,每班分7個桑腮,可以分給多少個班蕾域?",
            "我家買了38個蘋果,我吃了8個到旦,哥哥吃了10個旨巷,還剩多少個?",
            "商店共有西瓜56個添忘,上午買了15個采呐,下午買了21個,還有多少個沒買搁骑?",
            "媽媽給小麗48元錢斧吐,買了一個書包還剩15元,這個書包多少錢仲器?",
            "小軍拿了50元買了一個9元錢的文具盒煤率,小軍應找回多少元錢?",
            "媽媽給我買了一件48元的衣服乏冀,售貨員找了媽媽10元錢蝶糯,媽媽給了售貨員多少元錢?",
            "我家養(yǎng)了38只雞辆沦,過年吃了5只昼捍,過元宵節(jié)吃了3只,還剩多少只肢扯?",
            "公共汽車上有35個人妒茬,到站時下了20個,又上來了9個蔚晨,現在車上有多少個人乍钻?",
            "田里種著56棵白菜,種的蓮花白比白菜多13棵铭腕,蓮花白種了多少棵银择?",
            "水果店上午賣出桔子36箱,下午賣出27,一天共賣出多少箱?",
            "藍藍、玲玲谨履、小胖每人做了15朵紅花欢摄,他們一共做了幾朵紅花?",
            " 小亞帶30去玩笋粟,大風車10元怀挠,小火車8元析蝴,他還剩多少錢?",
            "學校送給一(1)班48只氣球绿淋,還剩52只闷畸,原來學校有幾只氣球?",
            " 蘋果26個吞滞,梨18個佑菩,桔子50個,蘋果裁赠、梨和桔子一共有幾個殿漠?",
            "小亞要做60道口算題,還剩18題沒有完成佩捞,小亞已經做完幾題绞幌?",
            "爸爸買了2根和路雪8元,買了3根伊利雪糕6元一忱,他付給營業(yè)員20元莲蜘,找回多少元?",
            "圖書室有漫畫60本帘营,借出25本票渠,還剩多少本?",
            " 小巧做了27道口算芬迄,還剩18道沒有做问顷。小巧一共要做多少道口算?",
            " 停車場上有35輛車薯鼠,開走8輛择诈,又開走7輛,一共開走幾輛出皇?",
            "小丁丁有100元,他買了一個32元的籃球和一雙40元的溜冰鞋,他還剩多少錢?",
            " 書店有100本書,上午賣出45本書哗戈,下午賣出27本郊艘,一天共賣出多少本?",
            " 車上有乘客56人唯咬,到站后有18人上車∩醋ⅲ現在有乘客多少人?",
            "車上原有64人胆胰,有25人下車狞贱。 車上還有乘客多少人?",
            "紅鉛筆有50支蜀涨,藍鉛筆比紅鉛筆少8支瞎嬉,藍鉛筆有多少支蝎毡?",
            "轎車有23輛,卡車有37輛氧枣,大客車有18輛沐兵,一共有多少輛車?",
            "水果店上午賣出75箱蘋果便监,下午賣出57箱扎谎,一天一共賣出多少箱蘋果?",
            " 樹上原來有39只鳥烧董,又飛來8只毁靶,現在有幾只?",
            "停車場開走58輛汽車逊移,還剩16輛老充,原來有多少輛?",
            " 一共有100只氣球螟左,其中紅氣球有15只啡浊,藍氣球有51只,黃氣球有多少只胶背?",
            "停車場上有35輛車巷嚣,開走8輛,又開走7輛钳吟,一共開走幾輛廷粒?",
            "紅黃白100只氣球,其中紅氣球20只红且,黃氣球50只坝茎,白氣球有幾只?",
            "小朋友做紙花暇番,小亞和小巧各做了20朵嗤放,小丁丁做了15朵,他們一共做了幾朵紙花壁酬?",
            "河里有8只鴨子次酌,游來了14只,河里現在有多少只鴨子舆乔?",
            " 商店里有65臺電視機,賣掉一些后岳服,還剩35臺電視機。賣掉多少臺希俩?",
            "小朋友跳繩吊宋,小亞與小巧各跳了20個,小丁丁跳了25個颜武,他們三人共跳多少個璃搜?",
            "一本書 18元拖吼,一支筆3元,一個書包68元腺劣,小胖買一本書和兩支筆用去多少元绿贞?",
            "星期天小胖和媽媽去超市買了一個30元的小足球和一副28元的羽毛球拍,媽媽帶了3張20元橘原,夠不夠籍铁?",
            "小巧想把草莓分給三個好朋友,小丁丁和小胖各分到6個趾断,小亞得到4個拒名,正好分完。小巧原來有幾個草莓芋酌?",
            "小丁丁有42本課外書增显,先借給小亞6本,又向小胖借了9本脐帝,小丁丁現在有幾本書同云?",
            " 汽車上原有35人,到站后先下車12人堵腹,又上車8人炸站,現在車上有幾人?",
            "學校交書報費疚顷,《少年時報》22元旱易,《卡通王》38元,小丁丁帶50元夠嗎腿堤?",
            "小丁丁幫媽媽做家務阀坏,洗碗5分鐘,燒水10分鐘笆檀,擦桌椅5分鐘忌堂,小丁丁做這些事最少用幾分鐘?",
            "語文書12本,借走3本就與數學書一樣多,數學書幾本?",
            "停車場有汽車60輛,第一次開走15輛,第二次開來14輛,停車場現在有幾輛車?",
            "小明有45本故事書,借給小丁丁17本.借給小亞14本,還剩幾本?",
            "小明付了50元買了一本書误债,營業(yè)員阿姨找回他35元浸船,這本書要幾元?",
            "苗苗第一個月的零花錢是35元寝蹈,第2個月是20元,第3個月是43元登淘,苗苗三個月的零花錢一共是多少元箫老?",
            "原有29個球,借出8個黔州,還剩多少個耍鬓?",
            "借出8個球阔籽,還剩21個,原有多少個牲蜀?",
            "買來12個蘋果笆制,吃了4個,還剩多少個涣达?",
            "吃了4個蘋果在辆,還剩8個,原來有多少個度苔?",
            "車場里開走了4輛車匆篓,還剩15輛。車場里原有多少輛車寇窑?",
            "草地上的兔子跑了8只后鸦概,還剩下40只,原來有兔子多少只甩骏?",
            "商店賣出汽水32箱窗市,還剩20箱,原有汽水多少箱饮笛?",
            "水果店賣出蘋果76筐咨察,還剩3筐,原有蘋果多少筐缎浇?",
            "小山剪了一些★扎拣,貼了31個,還剩下7個素跺。小山剪了幾個★二蓝?",
            "小華看書看了92頁,還剩下4頁沒有看指厌。這本書有多少頁刊愚?",
            "英語小組原來有12個人,今天上課缺席的有2個人踩验,今天上課的有多少人鸥诽?",
            "學校里有8個足球,49個小皮球箕憾,小皮球比足球多多少個牡借?",
            "商店里有26個小汽球,5個大汽球袭异,大汽球比小汽球少多少個钠龙?",
            "合唱隊有38個女同學,6個男同學,男同學比女同學少多少個碴里?",
            "小明養(yǎng)了36只兔沈矿,小紅養(yǎng)了24只兔,小明比小紅多養(yǎng)了多少只咬腋?",
            "商店里有35盒紅汽球羹膳,20盒黃汽球,黃汽球比紅汽球少多少盒根竿?",
            "梨子有5個陵像,蘋果有7個,蘋果比梨子多多少個犀填?",
            "草地上有白兔7只蠢壹,黑兔4只,白兔比黑兔多多少只九巡?",
            "小花8歲图贸,爸爸38歲,爸爸比小花大幾歲冕广?",
            "美術組有13人疏日,數學組有9人,美術組比數學組多多少人撒汉?",
            "草地有公雞7只沟优,母雞39只,母雞比公雞多多少只睬辐?公雞比母雞少多少只裆甩?",
            "食堂運回大米28袋饱普,面粉7袋文黎,面粉比大米少多少袋背镇?",
            "體操隊有18人,游泳隊比體操隊多11人丰刊,游泳隊有多少人隘谣?",
            "水果店賣出26筐蘋果后,剩下的比賣出的多9筐啄巧。剩下多少筐蘋果寻歧?",
            "小華有25本故事書,小方比他多11本秩仆。小方有多少本码泛?",
            "六月賣出冰箱58臺,七月比六月多賣出22臺澄耍。七月賣出多少臺弟晚?",
            "小花今年8歲忘衍,爸爸比她大29歲逾苫。爸爸今年多少歲卿城?",
            "有5個草莓,櫻桃比草莓多3個铅搓,櫻桃有幾個瑟押?",
            "小花撿了25個貝殼,小明比小花多撿了4個星掰,小明撿了多少個貝殼多望?",
            "數學組有9人,美術組比數學組多8人氢烘,美術組有多少人怀偷?",
            "食堂運回大米28袋,面粉比大米多7袋播玖,面粉有多少袋椎工?",
            "小明養(yǎng)了36只兔,小紅比小明多養(yǎng)了3只蜀踏,小紅養(yǎng)了多少只兔维蒙?",
            "商店里有35盒紅汽球,黃汽球比紅汽球多10盒果覆,黃汽球有多少盒颅痊?",
            "25比12多多少?",
            "比32多20的數是多少局待?",
            "一個加數是28斑响,另一個加數比它大10,另一個加數是多少钳榨?",
            "一個數比60多30舰罚,這個數是多少?",
            "38比8多多少重绷?",
            "一個數是26沸停,另一個數是58,和是多少昭卓?",
            "29比7多多少愤钾?",
            "比49多20的數是多少?",
            "一個數比26多8候醒,這個數是多少能颁?",
            "第一個加數是58,第二個加數是89倒淫,第一個加數比第二個加數少多少伙菊?",
            "被減數是69,減數是39,被減數比減數多多少镜硕?",
            "比29多29的數是多少运翼?",
            "54與67的差是多少?",
            "5與38的和是多少兴枯?",
            "比最大的兩位數多1的數是多少血淌?",
            "一個加數是35,另一個加數比它多7财剖,另一個加數是多少悠夯?",
            "明明寫毛筆字,寫了13個以后躺坟,還有9個要寫沦补,明明一共要寫多少個毛筆字?",
            "從花上飛走了26只蝴蝶咪橙,又飛走了5只夕膀,兩次飛走了多少只?",
            "飛機場上有16架飛機匣摘,飛走了8架店诗,現在飛機場上還有多少架飛機?",
            "小平種7盆紅花音榜,又種了同樣多的黃花庞瘸,兩種花共多少盆?",
            "學校原有15瓶膠水赠叼,又買回9瓶擦囊,現在有多少瓶?",
            "小強吃了7個蘋果嘴办,剩下15個蘋果瞬场,原來有多少個蘋果?",
            "學校有蘭花和菊花共15盆涧郊,蘭花有6盆贯被,菊花幾盆?",
            "小麗買衣服用了30元妆艘,售貨員找給她21元彤灶,小麗原來有多少錢?",
            "媽媽上衣和褲子共用去79元批旺,買上衣用去50元幌陕,買褲子用去多少元?",
            "商店兩次賣出洋娃娃50個汽煮,第一次賣出30個搏熄,第二次賣出幾個棚唆?",
            "商店兩次賣出洋娃娃50個,第一次賣出30個心例,兩次賣出多少個宵凌?",
            "有60只小雞,28只母雞契邀。還剩多少只摆寄?",
            "有60只小雞,28只母雞坯门。母雞比小雞少多少只?",
            "有60只小雞逗扒,28只母雞古戴。一共有多少只?",
            "學校有蘭花和菊花共16盆矩肩,蘭花有6盆现恼,菊花有幾盆?",
            "小青兩次畫了9個 黍檩,第一次畫了5個叉袍,第二次畫了多少個?",
            "小紅家有蘋果和梨子共18個刽酱,蘋果有9個喳逛,梨子有多少個?",
            "學校要把20箱文具送給山區(qū)小學棵里,已送去10箱润文,還要送幾箱?",
            "家有15棵白菜殿怜,吃了5棵典蝌,還有幾棵?",
            "一條馬路兩旁各種上9棵樹头谜,一共種樹多少棵骏掀?",
            "從車場開走9輛汽車,還剩5輛柱告,車場原來有多少汽車截驮?",
            "從車場開走8輛大汽車,又開走同樣多的小汽車末荐,兩次開走多少輛汽車侧纯?",
            "學校體育室有8個足球 ,又買來7個甲脏,現在有多少個眶熬?",
            "學雷鋒小組上午修了8張椅妹笆,下午修了12張,一天修了多少張椅娜氏?",
            "小明和小麗一共拍了35下拳缠,小麗拍了20下,小明拍了多少下贸弥?",
            "樹上有20只小鳥窟坐,先飛走了7只,又飛走了6只绵疲,一共飛走了多少只哲鸳?",
            "校園里有18盆菊花,運走了16盆盔憨;蘭花比菊花少多少盆徙菠?",
            "校園里有18盆菊花,還剩下5盆郁岩,蘭花比菊花少多少盆婿奔?",
            "校園里有18盆菊花,蘭花16盆问慎,蘭花比菊花少多少盆萍摊?",
            "幼兒園買蘋果50個,分給小朋友12個如叼,還剩多少個冰木?",
            "幼兒園買蘋果50個,梨比蘋果少12個薇正,還剩多少個片酝?",
            "幼兒園買蘋果50個,梨比蘋果多12個挖腰,還剩多少個雕沿?",
            "有白兔和灰兔共30只,有白兔24只猴仑。原來有多少只审轮?",
            "有白兔和灰兔共30只,有白兔25只辽俗。有灰兔多少只疾渣?",
            "有一些兔,跑了4只崖飘,還有18只榴捡。原來有多少只?",
            "小猴拿了21個紅果朱浴,小狗拿了18個紅果吊圾,小猴和小狗誰拿得多达椰?",
            "三種郵票一共有92張,熊貓郵票23張项乒,龍郵票38張啰劲。熊貓郵票和龍郵票共有多少張?",
            "一共有96個蘋果檀何,上午賣了26個蝇裤,下午賣了39個,還剩幾個频鉴?",
            "從前面數栓辜,小明排18,從后面他排15,這一排共有幾人?",
            "一個貝殼25元砚殿,一個海螺13元啃憎,用50元去買還剩 多少元?",
            "小紅跳了25個繩似炎,小剛跳了36個,一共跳了幾個悯姊?",
            "兩只青蛙一共吃了40只害蟲羡藐,一只吃了15只,另一只吃了多少只悯许?",
            "男生有32瓶果汁仆嗦,女生有19瓶果汁,男生比女生多幾瓶先壕?",
            "小明拔蘿卜瘩扼,已經拔了16個,地里還剩48個垃僚,地里原有幾個集绰?",
            "米奇摘了48個桃,小猴比米奇多12個谆棺,小猴摘了幾個栽燕?",
            "小明有37個糖果,小紅比小明少19個改淑,小紅有幾個碍岔?",
            "一共要折43只紙鶴朵夏,已經好了19只奈籽,還要折幾只?",
            "小明跳了25下繩,小剛跳了17下,小剛再跳幾下就和小明同樣多?",
            "小明跳了47個繩,小紅再跳18個就和小明一樣多,小紅跳了幾個?",
            "車上原有45人,下來19人,又上來23人,現在有多少人?",
            "一共有96筐蘋果,上午賣了26筐啤贩,下午賣了39筐志衍,還剩幾筐惹悄?",
            "一班有38人,二班有36 人央星,現有60頂帽子每人分一個夠嗎廉沮?",
            "打排球的有48人滤灯,比劃船的少19人豫尽,劃船的有幾人贬墩?",
            "小兔拔了26個蘿卜绪励,比小豬多7個蠢护,小豬拔了幾個?",
            "從前面數介评,小明排18,從后面他排15,這一排共有幾人坪仇?",
            "一個貝殼25元皆刺,一個海螺13元,用50元去買還剩 多少元?",
            "參加演出的合唱隊有28人弓乙,舞蹈隊的有24人巧婶,參加演出的一共有多少人?",
            "爸爸今年36歲,我比爸爸小28歲分衫,今年我?guī)讱q科乎?",
            "同學們去拍照走敌,已經照了17張项炼,還有19張沒照,膠卷一共有多少張柑蛇?",
            "汽車從起始站出發(fā)芥挣,到第一站有16人下車,24人上車耻台,現在車上有44人空免,有多少人在起始站上車?",
            "有一些小松鼠在樹上盆耽,后來跑了6只蹋砚,還剩下5只,原來有幾只小松鼠摄杂?",
            "黃花比紅花少5朵坝咐,紅花有12朵,黃花有幾朵析恢?",
            "兩個班共種樹20棵墨坚,其中一班種1棵,那么二班種了幾棵樹映挂?",
            "小張書包有18本書泽篮,我有3本,我比小張少幾本柑船?",
            "今天帽撑,小張書包有10本書,我有11本鞍时,我比小張多幾本亏拉?",
            "公共汽車上下來4人扣蜻,車上還坐著7人,原來車上有多少人及塘?",
            "今天莽使,小張書包有1本書,我有19本磷蛹,我比小張多幾本吮旅?",
            "停車場上原來有19輛汽車,第一次開走3輛味咳,第二次開走7輛庇勃。還剩多少輛?",
            "飛機場原有18架飛機槽驶,飛走13架责嚷,還剩幾架?",
            "公共汽車上下來1人掂铐,車上還坐著17人罕拂,原來車上有多少人?",
            "魚缸里有11條紅金魚和花金魚全陨,其中紅金魚有5條爆班,花金魚有多少條?",
            "公共汽車上下來8人辱姨,車上還坐著7人柿菩,原來車上有多少人?",
            "停車場上第一次開走7輛雨涛,第二次開走8輛枢舶。一共開走多少輛?",
            "學校舞蹈小組有女生9人替久,男生10人凉泄,舞蹈小組一共有學生多少人?",
            "籃里有蘋果和梨一共15只蚯根,其中蘋果有13只后众,梨有幾只?",
            "白兔和黑兔一共有9只颅拦,其中白兔有3只吼具,黑兔有幾只?",
            "8個同學回家了矩距,班里還剩12個同學,請問原來有幾個同學怖竭?",
            "媽媽買了一籃梨锥债,小明吃了10個,還剩余3個,媽媽買了多少個梨哮肚?",
            "小張書包有5本書登夫,我有12本,小張比我少幾本允趟?",
            "魚缸里有19條紅金魚和花金魚恼策,其中紅金魚有9條腹鹉,花金魚有多少條牍鞠?",
            "借了4本書捉邢,今天還了2本强法,還剩幾本書溅呢?",
            "小飛有12張畫片价脾,送給小明一些悔雹,還剩下9張补疑。送給小明多少張弧蝇?",
            "兩個班共種樹13棵碳褒,其中一班種12棵,那么二班種了幾棵樹看疗?",
            "生產隊有小牛7頭沙峻,大牛比小牛多8頭,大牛有多少頭两芳?",
            "黃花比紅花多7朵摔寨,紅花有11朵,黃花有幾朵盗扇?",
            "學校舞蹈小組有女生9人祷肯,男生2人,女生比男生多幾人疗隶?",
            "魚缸里有17條紅金魚和花金魚佑笋,其中紅金魚有15條,花金魚有多少條斑鼻?",
            "籃里有蘋果和梨一共18只蒋纬,其中蘋果有5只,梨有幾只坚弱?",
            "6個同學回家了蜀备,班里還剩11個同學,請問原來有幾個同學荒叶?",
            "黃花比紅花少5朵碾阁,紅花有12朵,黃花有幾朵些楣?");

    /**
     * 隨機生成10以內的加減法
     *
     * @param normalSumType 算術題類型
     * @return
     */
    public static String randomNormalSumTopic(NormalSumType normalSumType) {
        if (normalSumType == NormalSumType.Addition) {
            //加法
            int firstNum = RandomUtil.randomInt(1, 10);
            int secondNum = RandomUtil.randomInt(1, 11 - firstNum);
            return firstNum + "+" + secondNum + "=";
        } else {
            //減法
            int firstNum = RandomUtil.randomInt(1, 10);
            int secondNum = RandomUtil.randomInt(1, firstNum + 1);
            return firstNum + "-" + secondNum + "=";
        }
    }

    /**
     * 隨機20條10以內的加減算術題
     *
     * @return
     */
    public static List<String> randomNormalSumTopicList() {
        List<String> result = new ArrayList<>();
        //隨機10條加法
        while (result.size() < 10) {
            String item = randomNormalSumTopic(NormalSumType.Addition);

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        //隨機10條減法
        while (result.size() < 20) {
            String item = randomNormalSumTopic(NormalSumType.Subtraction);

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        return result;
    }

    /**
     * 隨機生成100以內的相鄰數
     *
     * @return
     */
    public static String randomNearNumTopic() {
        int num = RandomUtil.randomInt(2, 100);
        return "(  )" + num + "(  )";
    }

    /**
     * 隨機6條100以內的相鄰數題
     *
     * @return
     */
    public static List<String> randomNearNumTopicList() {
        List<String> result = new ArrayList<>();
        //隨機6條相鄰數
        while (result.size() < 6) {
            String item = randomNearNumTopic();

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        return result;
    }

    /**
     * 隨機生成100以內的比較
     *
     * @return
     */
    public static String randomCompareTopic() {
        int firstNum = RandomUtil.randomInt(1, 100);
        int secondNum = RandomUtil.randomInt(1, 100);
        return firstNum + " ? " + secondNum;
    }

    /**
     * 隨機8條100以內的比大小題
     *
     * @return
     */
    public static List<String> randomCompareTopicList() {
        List<String> result = new ArrayList<>();
        //隨機8條比較大小題
        while (result.size() < 8) {
            String item = randomCompareTopic();

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        return result;
    }

    /**
     * 隨機生成10以內的分解題
     *
     * @return
     */
    public static String randomDivideTopic() {
        int sum = RandomUtil.randomInt(2, 11);
        int firstNum = RandomUtil.randomInt(1, sum);
        if (RandomUtil.randomBoolean()) {
            return sum + "_" + firstNum + "  (  )";
        } else {
            return sum + "_" + "(  )  " + firstNum;
        }
    }

    /**
     * 隨機生成10以內的組合題
     *
     * @return
     */
    public static String randomCombinationTopic() {
        int firstNum = RandomUtil.randomInt(1, 10);
        int secondNum = RandomUtil.randomInt(1, 11 - firstNum);
        return firstNum + "    " + secondNum + "_" + "(  )";
    }

    /**
     * 隨機8條100以內的分解組合題
     *
     * @return
     */
    public static List<String> randomDivideCombinationTopicList() {
        List<String> result = new ArrayList<>();
        //隨機4條分解題
        while (result.size() < 4) {
            String item = randomDivideTopic();

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        //隨機4條組合題
        while (result.size() < 8) {
            String item = randomCombinationTopic();

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        return result;
    }

    /**
     * 隨機生成10以內的看圖計算題
     *
     * @return
     */
    public static String randomPhotoComputeTopic(NormalSumType normalSumType) {
        String photo = Photos.get(RandomUtil.randomInt(0, Photos.size()));
        if (normalSumType == NormalSumType.Addition) {
            //加法
            int firstNum = RandomUtil.randomInt(1, 10);
            int secondNum = RandomUtil.randomInt(1, 11 - firstNum);
            return getPhotoStr(photo, firstNum) + " + " + getPhotoStr(photo, secondNum);
        } else {
            //減法
            int firstNum = RandomUtil.randomInt(1, 10);
            int secondNum = RandomUtil.randomInt(1, firstNum + 1);
            return getPhotoStr(photo, firstNum) + " - " + getPhotoStr(photo, secondNum);
        }
    }

    /**
     * 隨機4條100以內的看圖計算題
     *
     * @return
     */
    public static List<String> randomPhotoComputeTopicList() {
        List<String> result = new ArrayList<>();
        //隨機2條加法題
        while (result.size() < 2) {
            String item = randomPhotoComputeTopic(NormalSumType.Addition);

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        //隨機2條減法題
        while (result.size() < 4) {
            String item = randomPhotoComputeTopic(NormalSumType.Subtraction);

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        return result;
    }

    /**
     * 隨機生成10以內數相加(湊10法)
     *
     * @return
     */
    public static String randomSecondSumTopic() {
        int firstNum = RandomUtil.randomInt(2, 10);
        int secondNum = RandomUtil.randomInt(11 - firstNum, 10);
        return firstNum + "+" + secondNum + "=";
    }

    /**
     * 隨機3條10以內數相加
     *
     * @return
     */
    public static List<String> randomSecondSumTopicList() {
        List<String> result = new ArrayList<>();
        while (result.size() < 3) {
            String item = randomSecondSumTopic();

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        return result;
    }

    /**
     * 隨機生成10以內的加減法連線
     *
     * @param normalSumType 算術題類型
     * @return
     */
    public static String randomLinkTopic(NormalSumType normalSumType) {
        if (normalSumType == NormalSumType.Addition) {
            //加法
            int firstNum = RandomUtil.randomInt(1, 10);
            int secondNum = RandomUtil.randomInt(1, 11 - firstNum);
            return firstNum + "+" + secondNum + "=" + (firstNum + secondNum);
        } else {
            //減法
            int firstNum = RandomUtil.randomInt(1, 10);
            int secondNum = RandomUtil.randomInt(1, firstNum + 1);
            return firstNum + "-" + secondNum + "=" + (firstNum - secondNum);
        }
    }

    /**
     * 隨機5條10以內的加減算術題
     *
     * @return
     */
    public static List<String> randomLinkTopicList() {
        List<String> result = new ArrayList<>();
        while (result.size() < 5) {

            String item;

            if (RandomUtil.randomBoolean()) {
                item = randomLinkTopic(NormalSumType.Addition);
            } else {
                item = randomLinkTopic(NormalSumType.Subtraction);
            }

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        return result;
    }

    /**
     * 隨機生成1x以內數相減(借十法)
     *
     * @return
     */
    public static String randomThirdSubTopic() {
        int firstNum = RandomUtil.randomInt(11, 20);
        int secondNum = RandomUtil.randomInt(firstNum - 10, 10);
        return firstNum + "-" + secondNum + "=";
    }

    /**
     * 隨機3條1x以內數相減(借十法)
     *
     * @return
     */
    public static List<String> randomThirdSubTopicList() {
        List<String> result = new ArrayList<>();
        while (result.size() < 3) {
            String item = randomThirdSubTopic();

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        return result;
    }

    /**
     * 隨機生成數一數題
     *
     * @return
     */
    public static String randomComputeCountTopic() {
        //四種圖片
        List<String> photoList = new ArrayList<>();

        while (photoList.size() < 4) {
            String photo = Photos.get(RandomUtil.randomInt(0, Photos.size()));
            if (!photoList.contains(photo)) {
                photoList.add(photo);
            }
        }

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < photoList.size(); i++) {
            String photo = photoList.get(i);

            int count = RandomUtil.randomInt(0, 7);
            for (int j = 0; j < count; j++) {
                sb.append(photo);
            }
        }

        return sb + "_" + photoList.get(RandomUtil.randomInt(0, 4));
    }

    /**
     * 隨機4條隨機生成數一數題
     *
     * @return
     */
    public static List<String> randomComputeCountTopicList() {
        List<String> result = new ArrayList<>();
        while (result.size() < 4) {
            String item = randomComputeCountTopic();

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        return result;
    }

    /**
     * 隨機生成應用題
     *
     * @return
     */
    public static String randomApplicationTopic() {
        return ApplicationTopicList.get(RandomUtil.randomInt(0, ApplicationTopicList.size()));
    }

    /**
     * 隨機3條隨機生成應用題題
     *
     * @return
     */
    public static List<String> randomApplicationTopicList() {
        List<String> result = new ArrayList<>();
        while (result.size() < 3) {
            String item = randomApplicationTopic();

            if (!result.contains(item)) {
                result.add(item);
            }
        }

        return result;
    }

    /**
     * 根據數量獲取圖片字符串
     *
     * @param photo
     * @param count
     * @return
     */
    private static String getPhotoStr(String photo, int count) {
        List<String> list = new ArrayList<>();

        for (int i = 0; i < count; i++) {
            list.add(photo);
        }

        return String.join("", list);
    }
}

生成方法

/**
     * 根據一段時間獲取該段時間的所有月份
     *
     * @param minDate yyyy_MM_dd
     * @param maxDate yyyy_MM_dd
     * @return
     */
    public static List<String> getDayBetween(String minDate, String maxDate) {
        ArrayList<String> result = new ArrayList<String>();
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd");

            Calendar min = Calendar.getInstance();
            Calendar max = Calendar.getInstance();
            min.setTime(sdf.parse(minDate));
            min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), min.get(Calendar.DAY_OF_MONTH));

            max.setTime(sdf.parse(maxDate));
            max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), max.get(Calendar.DAY_OF_MONTH));

            Calendar curr = min;
            while (curr.before(max)) {
                result.add(sdf.format(curr.getTime()));
                curr.add(Calendar.DAY_OF_MONTH, 1);
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return result;
    }

    private static void generate(String path) throws Exception {
        FileOutputStream out = new FileOutputStream(new File(path));

        XWPFDocument document = new XWPFDocument();

        //頭部信息
        createHeader(document);
        createEmptyParagraph(document);

        //第一大題 - 10以內的算術題
        createNormalSumTopic(document);
        createEmptyParagraph(document);

        //第二大題 - 100以內的相鄰數題
        createNearNumTopic(document);
        createEmptyParagraph(document);

        //第三大題 - 100以內的比較大小題
        createCompareTopic(document);
        createEmptyParagraph(document);

        //第四大題 - 10以內的分解組合題
        createDivideCombinationTopic(document);
        createEmptyParagraph(document);

        //第五大題 - 10以內的圖片計算題
        createPhotoComputeTopic(document);
        createEmptyParagraph(document);
        createEmptyParagraph(document);

        //第六大題 - 10以內的加法題(湊十法)
        createSecondSumTopic(document);
        createEmptyParagraph(document);

        //第七大題 - 1x以內的減法題(借十法)
        createThirdSubTopic(document);
        createEmptyParagraph(document);

        //第八大題 - 10以內的加減法連線題
        createLinkTopic(document);
        createEmptyParagraph(document);

        //第九大題 - 數一數題
        createComputeCountTopic(document);
        createEmptyParagraph(document);

        //第十大題 - 應用題
        createApplicationTopic(document);
        createEmptyParagraph(document);

        document.write(out);
        out.close();
    }

    /**
     * 換行
     *
     * @param document
     */
    private static void createEmptyParagraph(XWPFDocument document) {
        //換行
        XWPFParagraph spaceParagraph = document.createParagraph();
        XWPFRun spaceParagraphRun = spaceParagraph.createRun();
        spaceParagraphRun.setText("\r");
    }

    /**
     * 創(chuàng)建頭部信息
     *
     * @param document
     */
    private static void createHeader(XWPFDocument document) {
        //標題
        XWPFParagraph titleParagraph = document.createParagraph();
        titleParagraph.setAlignment(ParagraphAlignment.CENTER);

        XWPFRun titleParagraphRun = titleParagraph.createRun();
        titleParagraphRun.setText("暑假幼小銜接數學測試卷");
        titleParagraphRun.setColor("000000");
        titleParagraphRun.setFontSize(23);
        titleParagraphRun.setFontFamily("宋體");

        //分數
        XWPFParagraph scoreParagraph = document.createParagraph();
        scoreParagraph.setAlignment(ParagraphAlignment.CENTER);

        XWPFRun scoreParagraphRun = scoreParagraph.createRun();
        scoreParagraphRun.setText("(100分)");
        scoreParagraphRun.setColor("000000");
        scoreParagraphRun.setFontSize(17);
        scoreParagraphRun.setFontFamily("楷體");
    }

    /**
     * 創(chuàng)建第一大題 - 10以內的算術題
     *
     * @param document
     */
    private static void createNormalSumTopic(XWPFDocument document) {
        //20條10以內的算術題
        List<String> topicList = randomNormalSumTopicList();

        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setAlignment(ParagraphAlignment.LEFT);

        XWPFRun firstParagraphRun = firstParagraph.createRun();
        firstParagraphRun.setText("一脂凶、看誰算得又對又快(10分)");
        firstParagraphRun.setColor("000000");
        firstParagraphRun.setFontSize(17);
        firstParagraphRun.setFontFamily("楷體");

        createEmptyParagraph(document);

        //基本信息表格
        XWPFTable table = document.createTable(4, 5);
        table.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        table.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();
        infoTableWidth.setType(STTblWidth.DXA);
        infoTableWidth.setW(BigInteger.valueOf(9072));

        int totalRow = 4;
        int totalCol = 5;

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                int index = rowNum * totalCol + colNum;
                String item = topicList.get(index);

                XWPFTableRow row = table.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.LEFT);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();
                paragraphRun.setText(item);
                paragraphRun.setColor("000000");
                paragraphRun.setFontSize(17);
                paragraphRun.setFontFamily("楷體");
            }
        }
    }

    /**
     * 創(chuàng)建第二大題 - 100以內的相鄰數題
     *
     * @param document
     */
    private static void createNearNumTopic(XWPFDocument document) {
        //6條100以內的相鄰數題
        List<String> topicList = randomNearNumTopicList();

        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setAlignment(ParagraphAlignment.LEFT);

        XWPFRun firstParagraphRun = firstParagraph.createRun();
        firstParagraphRun.setText("二宪睹、填相鄰數(6分)");
        firstParagraphRun.setColor("000000");
        firstParagraphRun.setFontSize(17);
        firstParagraphRun.setFontFamily("楷體");

        createEmptyParagraph(document);

        //基本信息表格
        XWPFTable table = document.createTable(2, 3);
        table.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        table.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();
        infoTableWidth.setType(STTblWidth.DXA);
        infoTableWidth.setW(BigInteger.valueOf(9072));

        int totalRow = 2;
        int totalCol = 3;

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                int index = rowNum * totalCol + colNum;
                String item = topicList.get(index);

                XWPFTableRow row = table.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.LEFT);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();
                paragraphRun.setText(item);
                paragraphRun.setColor("000000");
                paragraphRun.setFontSize(17);
                paragraphRun.setFontFamily("楷體");
            }
        }
    }

    /**
     * 創(chuàng)建第三大題 - 100以內的比較大小題
     *
     * @param document
     */
    private static void createCompareTopic(XWPFDocument document) {
        //6條100以內的相鄰數題
        List<String> topicList = randomCompareTopicList();

        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setAlignment(ParagraphAlignment.LEFT);

        XWPFRun firstParagraphRun = firstParagraph.createRun();
        firstParagraphRun.setText("三、在?里填上“<”“>”或“=(8分)");
        firstParagraphRun.setColor("000000");
        firstParagraphRun.setFontSize(17);
        firstParagraphRun.setFontFamily("楷體");

        createEmptyParagraph(document);

        //基本信息表格
        XWPFTable table = document.createTable(2, 4);
        table.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        table.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();
        infoTableWidth.setType(STTblWidth.DXA);
        infoTableWidth.setW(BigInteger.valueOf(9072));

        int totalRow = 2;
        int totalCol = 4;

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                int index = rowNum * totalCol + colNum;
                String item = topicList.get(index);

                XWPFTableRow row = table.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.LEFT);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();
                paragraphRun.setText(item);
                paragraphRun.setColor("000000");
                paragraphRun.setFontSize(17);
                paragraphRun.setFontFamily("楷體");
            }
        }
    }

    /**
     * 創(chuàng)建第四大題 - 10以內的分解組合題
     *
     * @param document
     */
    private static void createDivideCombinationTopic(XWPFDocument document) {
        //8條10以內的分解組合題
        List<String> topicList = TopicUtil.randomDivideCombinationTopicList();

        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setAlignment(ParagraphAlignment.LEFT);

        XWPFRun firstParagraphRun = firstParagraph.createRun();
        firstParagraphRun.setText("四蚕钦、分解與組合(8分)");
        firstParagraphRun.setColor("000000");
        firstParagraphRun.setFontSize(17);
        firstParagraphRun.setFontFamily("楷體");

        createEmptyParagraph(document);

        //基本信息表格
        XWPFTable divideTable = document.createTable(3, 4);
        divideTable.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        divideTable.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth divideTableWidth = divideTable.getCTTbl().addNewTblPr().addNewTblW();
        divideTableWidth.setType(STTblWidth.DXA);
        divideTableWidth.setW(BigInteger.valueOf(9072));

        int totalRow = 3;
        int totalCol = 4;

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                int index = colNum;

                String item = topicList.get(index);
                String[] itemArr = item.split("_");

                XWPFTableRow row = divideTable.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.CENTER);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();

                if (rowNum % 3 == 0) {
                    paragraphRun.setText(itemArr[0]);
                    paragraphRun.setFontSize(17);
                } else if (rowNum % 3 == 1) {
                    paragraphRun.setText("∧");
                    paragraphRun.setFontSize(43);
                } else {
                    paragraphRun.setText(itemArr[1]);
                    paragraphRun.setFontSize(17);
                }

                paragraphRun.setColor("000000");
                paragraphRun.setFontFamily("楷體");
            }
        }

        createEmptyParagraph(document);

        XWPFTable combinationTable = document.createTable(3, 4);
        combinationTable.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        combinationTable.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth combinationTableWidth = combinationTable.getCTTbl().addNewTblPr().addNewTblW();
        combinationTableWidth.setType(STTblWidth.DXA);
        combinationTableWidth.setW(BigInteger.valueOf(9072));

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                int index = 4 + colNum;

                String item = topicList.get(index);
                String[] itemArr = item.split("_");

                XWPFTableRow row = combinationTable.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.CENTER);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();

                if (rowNum % 3 == 0) {
                    paragraphRun.setText(itemArr[0]);
                    paragraphRun.setFontSize(17);
                } else if (rowNum % 3 == 1) {
                    paragraphRun.setText("∨");
                    paragraphRun.setFontSize(43);
                } else {
                    paragraphRun.setText(itemArr[1]);
                    paragraphRun.setFontSize(17);
                }

                paragraphRun.setColor("000000");
                paragraphRun.setFontFamily("楷體");
            }
        }
    }

    /**
     * 創(chuàng)建第五大題 - 10以內的圖片計算題
     *
     * @param document
     */
    private static void createPhotoComputeTopic(XWPFDocument document) {
        //4條10以內的圖片計算題
        List<String> topicList = randomPhotoComputeTopicList();

        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setAlignment(ParagraphAlignment.LEFT);

        XWPFRun firstParagraphRun = firstParagraph.createRun();
        firstParagraphRun.setText("五亭病、看圖列算式并計算(8分)");
        firstParagraphRun.setColor("000000");
        firstParagraphRun.setFontSize(17);
        firstParagraphRun.setFontFamily("楷體");

        createEmptyParagraph(document);

        //基本信息表格
        XWPFTable table = document.createTable(4, 2);
        table.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        table.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();
        infoTableWidth.setType(STTblWidth.DXA);
        infoTableWidth.setW(BigInteger.valueOf(9072));

        int totalRow = 4;
        int totalCol = 2;

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                int index = rowNum;
                String item = topicList.get(index);

                XWPFTableRow row = table.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.LEFT);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();
                if (colNum % 2 == 1) {
                    paragraphRun.setText("□ ? □ = □");
                } else {
                    paragraphRun.setText(item);
                }
                paragraphRun.setFontSize(17);
                paragraphRun.setColor("000000");
                paragraphRun.setFontFamily("楷體");
            }
        }
    }

    /**
     * 創(chuàng)建第六大題 - 10以內的加法題(湊十法)
     *
     * @param document
     */
    private static void createSecondSumTopic(XWPFDocument document) {
        //3條10以內的加法題(湊十法)
        List<String> topicList = randomSecondSumTopicList();

        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setAlignment(ParagraphAlignment.LEFT);

        XWPFRun firstParagraphRun = firstParagraph.createRun();
        firstParagraphRun.setText("六、算一算嘶居,湊十法(9分)");
        firstParagraphRun.setColor("000000");
        firstParagraphRun.setFontSize(17);
        firstParagraphRun.setFontFamily("楷體");

        createEmptyParagraph(document);

        //基本信息表格
        XWPFTable table = document.createTable(3, 3);
        table.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        table.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();
        infoTableWidth.setType(STTblWidth.DXA);
        infoTableWidth.setW(BigInteger.valueOf(9072));

        int totalRow = 3;
        int totalCol = 3;

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                String item = topicList.get(colNum);

                XWPFTableRow row = table.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.CENTER);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();
                if (rowNum == 0) {
                    paragraphRun.setText(item);
                } else {
                    paragraphRun.setText("");
                }
                paragraphRun.setFontSize(17);
                paragraphRun.setColor("000000");
                paragraphRun.setFontFamily("楷體");
            }
        }
    }

    /**
     * 創(chuàng)建第七大題 - 1x以內的減法題(借十法)
     *
     * @param document
     */
    private static void createThirdSubTopic(XWPFDocument document) {
        //3條10以內的加法題(湊十法)
        List<String> topicList = randomThirdSubTopicList();

        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setAlignment(ParagraphAlignment.LEFT);

        XWPFRun firstParagraphRun = firstParagraph.createRun();
        firstParagraphRun.setText("七罪帖、算一算,借十法(9分)");
        firstParagraphRun.setColor("000000");
        firstParagraphRun.setFontSize(17);
        firstParagraphRun.setFontFamily("楷體");

        createEmptyParagraph(document);

        //基本信息表格
        XWPFTable table = document.createTable(3, 3);
        table.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        table.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();
        infoTableWidth.setType(STTblWidth.DXA);
        infoTableWidth.setW(BigInteger.valueOf(9072));

        int totalRow = 3;
        int totalCol = 3;

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                int index = rowNum;
                String item = topicList.get(colNum);

                XWPFTableRow row = table.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.CENTER);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();
                if (rowNum == 0) {
                    paragraphRun.setText(item);
                } else {
                    paragraphRun.setText("");
                }
                paragraphRun.setFontSize(17);
                paragraphRun.setColor("000000");
                paragraphRun.setFontFamily("楷體");
            }
        }
    }

    /**
     * 創(chuàng)建第八大題 - 10以內的加減法連線題
     *
     * @param document
     */
    private static void createLinkTopic(XWPFDocument document) {
        //5條10以內的加減法連線題
        List<String> topicList = randomLinkTopicList();
        List<String> answerList = new ArrayList<>();

        for (int i = 0; i < topicList.size(); i++) {
            answerList.add(topicList.get(i).split("=")[1]);
        }

        Collections.shuffle(answerList);

        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setAlignment(ParagraphAlignment.LEFT);

        XWPFRun firstParagraphRun = firstParagraph.createRun();
        firstParagraphRun.setText("八邮屁、算一算整袁,連一連(5分)");
        firstParagraphRun.setColor("000000");
        firstParagraphRun.setFontSize(17);
        firstParagraphRun.setFontFamily("楷體");

        createEmptyParagraph(document);

        //基本信息表格
        XWPFTable table = document.createTable(5, 2);
        table.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        table.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();
        infoTableWidth.setType(STTblWidth.DXA);
        infoTableWidth.setW(BigInteger.valueOf(9072));

        int totalRow = 5;
        int totalCol = 2;

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                int index = rowNum;
                String item = topicList.get(index);

                XWPFTableRow row = table.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.CENTER);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();
                if (colNum % 2 == 0) {
                    paragraphRun.setText(item.split("=")[0]);
                } else {
                    paragraphRun.setText(answerList.get(rowNum));
                }
                paragraphRun.setFontSize(17);
                paragraphRun.setColor("000000");
                paragraphRun.setFontFamily("楷體");
            }
        }
    }

    /**
     * 創(chuàng)建第九大題 - 數一數題
     *
     * @param document
     */
    private static void createComputeCountTopic(XWPFDocument document) {
        //4條數一數題
        List<String> topicList = randomComputeCountTopicList();

        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setAlignment(ParagraphAlignment.LEFT);

        XWPFRun firstParagraphRun = firstParagraph.createRun();
        firstParagraphRun.setText("九、數一數樱报,填一填(4分)");
        firstParagraphRun.setColor("000000");
        firstParagraphRun.setFontSize(17);
        firstParagraphRun.setFontFamily("楷體");

        createEmptyParagraph(document);

        //基本信息表格
        XWPFTable table = document.createTable(4, 2);
        table.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        table.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();
        infoTableWidth.setType(STTblWidth.DXA);
        infoTableWidth.setW(BigInteger.valueOf(9072));

        int totalRow = 4;
        int totalCol = 2;

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                int index = rowNum;
                String item = topicList.get(index);

                XWPFTableRow row = table.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.CENTER);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();
                if (colNum % 2 == 0) {
                    paragraphRun.setText(item.split("_")[0]);
                } else {
                    paragraphRun.setText(item.split("_")[1] + "□個");
                }
                paragraphRun.setFontSize(17);
                paragraphRun.setColor("000000");
                paragraphRun.setFontFamily("楷體");
            }
        }
    }

    /**
     * 創(chuàng)建第十大題 - 應用題
     *
     * @param document
     */
    private static void createApplicationTopic(XWPFDocument document) {
        //3條應用題
        List<String> topicList = randomApplicationTopicList();

        XWPFParagraph firstParagraph = document.createParagraph();
        firstParagraph.setAlignment(ParagraphAlignment.LEFT);

        XWPFRun firstParagraphRun = firstParagraph.createRun();
        firstParagraphRun.setText("十葬项、解決問題(15分)");
        firstParagraphRun.setColor("000000");
        firstParagraphRun.setFontSize(17);
        firstParagraphRun.setFontFamily("楷體");

        createEmptyParagraph(document);

        //基本信息表格
        XWPFTable table = document.createTable(6, 1);
        table.setTableAlignment(TableRowAlign.CENTER);
        //去表格邊框
        table.getCTTbl().getTblPr().unsetTblBorders();

        //列寬自動分割
        CTTblWidth infoTableWidth = table.getCTTbl().addNewTblPr().addNewTblW();
        infoTableWidth.setType(STTblWidth.DXA);
        infoTableWidth.setW(BigInteger.valueOf(9072));

        int totalRow = 6;
        int totalCol = 1;

        for (int rowNum = 0; rowNum < totalRow; rowNum++) {
            for (int colNum = 0; colNum < totalCol; colNum++) {
                int index = rowNum / 2;
                String item = topicList.get(index);

                XWPFTableRow row = table.getRow(rowNum);
                row.setHeight(800);
                XWPFTableCell cell = row.getCell(colNum);
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER); //垂直居中

                XWPFParagraph paragraph = cell.getParagraphs().get(0);
                paragraph.setAlignment(ParagraphAlignment.LEFT);
                paragraph.setVerticalAlignment(TextAlignment.CENTER);

                XWPFRun paragraphRun = paragraph.createRun();
                if (rowNum % 2 == 0) {
                    paragraphRun.setText(rowNum / 2 + 1 + "." + item);
                } else {
                    paragraphRun.setText("");
                }
                paragraphRun.setFontSize(17);
                paragraphRun.setColor("000000");
                paragraphRun.setFontFamily("楷體");
            }
        }
    }

4.使用

//        List<String> dayList = getDayBetween("2023_07_01", "2023_09_01");
//
//        for (int i = 0; i < dayList.size(); i++) {
//            generate("/Users/geenju/Desktop/papers/" + dayList.get(i) + ".docx");
//        }


        for (int i = 1; i < 1000; i++) {
            generate("/Users/geenju/Desktop/papers/幼小銜接測試題_" + i + ".docx");
        }
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市迹蛤,隨后出現的幾起案子民珍,更是在濱河造成了極大的恐慌,老刑警劉巖盗飒,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嚷量,死亡現場離奇詭異,居然都是意外死亡逆趣,警方通過查閱死者的電腦和手機蝶溶,發(fā)現死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宣渗,“玉大人抖所,你說我怎么就攤上這事『鄞眩” “怎么了田轧?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鞍恢。 經常有香客問我傻粘,道長,這世上最難降的妖魔是什么帮掉? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任弦悉,我火速辦了婚禮,結果婚禮上蟆炊,老公的妹妹穿的比我還像新娘稽莉。我一直安慰自己,他們只是感情好涩搓,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布污秆。 她就那樣靜靜地躺著后室,像睡著了一般。 火紅的嫁衣襯著肌膚如雪混狠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天疾层,我揣著相機與錄音将饺,去河邊找鬼。 笑死痛黎,一個胖子當著我的面吹牛予弧,可吹牛的內容都是我干的。 我是一名探鬼主播湖饱,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼掖蛤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了井厌?” 一聲冷哼從身側響起蚓庭,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仅仆,沒想到半個月后器赞,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡墓拜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年港柜,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咳榜。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡夏醉,死狀恐怖,靈堂內的尸體忽然破棺而出涌韩,到底是詐尸還是另有隱情畔柔,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布贸辈,位于F島的核電站释树,受9級特大地震影響,放射性物質發(fā)生泄漏擎淤。R本人自食惡果不足惜奢啥,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嘴拢。 院中可真熱鬧桩盲,春花似錦、人聲如沸席吴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至柬姚,卻和暖如春拟杉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背量承。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工搬设, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撕捍。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓拿穴,卻偏偏與公主長得像,于是被迫代替她去往敵國和親忧风。 傳聞我的和親對象是個殘疾皇子默色,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內容