務(wù)計(jì)算模型)
簡(jiǎn)介這份資源是中國(guó)人民大學(xué)會(huì)計(jì)系列教材《財(cái)務(wù)管理學(xué)》荊新主編第11章的配套授課課件面向會(huì)計(jì)、財(cái)務(wù)管理專(zhuān)業(yè)學(xué)生及備考相關(guān)課程的讀者用于系統(tǒng)梳理股利理論與政策這一企業(yè)財(cái)務(wù)決策中的核心章節(jié)。壓縮包共1個(gè)ppt文件約639KB以幻燈片形式呈現(xiàn)課堂講義框架包含知識(shí)點(diǎn)羅列、公式推導(dǎo)與案例數(shù)據(jù)便于直接用于復(fù)習(xí)、備課或課堂展示。內(nèi)容圍繞股利及其分配、股利理論、股利政策及其選擇、股票分割與股票回購(gòu)四大板塊展開(kāi)具體涵蓋利潤(rùn)分配程序中彌補(bǔ)虧損、計(jì)提法定與任意公積金、向股東支付股利的順序現(xiàn)金股利、股票股利、財(cái)產(chǎn)股利與負(fù)債股利的區(qū)別及對(duì)每股收益、每股市價(jià)的影響宣布日、股權(quán)登記日、除息日與股利發(fā)放日的完整流程并以寶鋼股份2007年分紅方案為實(shí)例演示同時(shí)結(jié)合A股上市公司分紅比例偏低、連續(xù)多年不分紅的現(xiàn)實(shí)討論與成熟市場(chǎng)形成對(duì)照幫助讀者理解股利政策背后的公司治理與投資價(jià)值邏輯。目前已有53人學(xué)習(xí)。1. 一份股利理論課件為什么值得當(dāng)成可解析的數(shù)據(jù)源人大《財(cái)務(wù)管理學(xué)》第 11 章《股利理論與政策》這套課件多數(shù)人拿到手的第一反應(yīng)是打開(kāi)翻一遍把 11.1 到 11.4 的知識(shí)點(diǎn)背下來(lái)交差。但換個(gè)用法把它當(dāng)成結(jié)構(gòu)化數(shù)據(jù)源來(lái)處理收獲完全不同這份 PPT 里同時(shí)躺著三類(lèi)可編程的東西——可計(jì)算模型利潤(rùn)分配順序、股票股利對(duì)每股收益和每股市價(jià)的稀釋公式、可校驗(yàn)的日期鏈寶鋼股份 2007 年分紅從預(yù)案公布日到派息日的完整時(shí)間軸、以及可復(fù)現(xiàn)的統(tǒng)計(jì)口徑62 家鐵公雞篩選規(guī)則從 1826 家一路篩到 62 家。這三類(lèi)內(nèi)容恰好對(duì)應(yīng)財(cái)務(wù)信息化里最常見(jiàn)的三種工作算得對(duì)、對(duì)得上、查得出。適合讀這份材料的人一類(lèi)是做財(cái)務(wù)系統(tǒng)或報(bào)表工具的工程師需要把制度性的分配順序翻譯成代碼分支一類(lèi)是做教學(xué)輔助、題庫(kù)生成的開(kāi)發(fā)者需要把課件正文里的公式和案例抽成可參數(shù)化的模板還有一類(lèi)是純自學(xué)者想用可運(yùn)行的數(shù)字去驗(yàn)證課件里那些看起來(lái)很明白、算起來(lái)容易錯(cuò)的結(jié)論。課件本身是靜態(tài)的但里面的每一個(gè)數(shù)字都能被重算一遍這才是它真正的價(jià)值所在。2. 用 python-pptx 拆解課件結(jié)構(gòu)從幻燈片樹(shù)到知識(shí)點(diǎn)索引2.1 先做目錄映射別急著抽正文課件的組織方式是典型的章—節(jié)—小節(jié)三級(jí)標(biāo)題11.1 股利及其分配下面掛 11.1.1 利潤(rùn)分配程序、11.1.2 股利的種類(lèi)、11.1.3 股利發(fā)放程序。這個(gè)層級(jí)本身就是天然的主鍵直接按幻燈片順序把文字全抽出來(lái)得到的是一坨沒(méi)有歸屬的字符串按標(biāo)題切段才拿到可檢索的知識(shí)點(diǎn)索引。處理的思路是先做一張映射表明確每類(lèi)內(nèi)容最終要變成什么再?zèng)Q定抽取粒度課件層級(jí)原始內(nèi)容可編程要素落地形式11.1.1利潤(rùn)分配程序四步順序約束有序步驟函數(shù)11.1.2現(xiàn)金/股票/財(cái)產(chǎn)/負(fù)債股利枚舉 計(jì)算公式枚舉類(lèi) 計(jì)算函數(shù)11.1.3宣布日→登記日→除息日→發(fā)放日日期鏈datetime 序列11.2MM 無(wú)關(guān)論與相關(guān)論前提假設(shè)集合條件分支11.3股利政策選擇決策因子打分/權(quán)重表11.4股票分割與股票回購(gòu)比例變換換算函數(shù)這張表決定了一件事不要試圖把課件整段轉(zhuǎn)成 Markdown 就完事。公式要單獨(dú)走一條清洗管線日期單獨(dú)存成結(jié)構(gòu)化字段案例數(shù)字單獨(dú)進(jìn)表其余描述性文字才進(jìn)全文檢索。2.2 遞歸遍歷 shape 樹(shù)提取標(biāo)題與正文PPT 的文本不在一個(gè)平面結(jié)構(gòu)里。組合形狀GroupShape會(huì)嵌套正文可能被拆成多個(gè)占位符標(biāo)題占位符的idx通常是 0但版式被改過(guò)的頁(yè)面未必如此。所以遍歷必須遞歸并且對(duì)沒(méi)有文本幀的形狀直接跳過(guò)。from pptx import Presentation from pptx.enum.shapes import MSO_SHAPE_TYPE def iter_text_shapes(shapes, depth0): 遞歸展開(kāi)組合形狀產(chǎn)出 (shape, 嵌套深度) for sh in shapes: if sh.shape_type MSO_SHAPE_TYPE.GROUP: yield from iter_text_shapes(sh.shapes, depth 1) else: yield sh, depth def parse_deck(path): prs Presentation(path) index [] for page, slide in enumerate(prs.slides, start1): title, body, tables , [], [] for sh, _ in iter_text_shapes(slide.shapes): if getattr(sh, has_table, False) and sh.has_table: rows [[c.text.strip() for c in r.cells] for r in sh.table.rows] tables.append(rows) continue if not getattr(sh, has_text_frame, False) or not sh.has_text_frame: continue # 段落級(jí)拼接段落之間的換行在后續(xù)清洗里統(tǒng)一處理 text \n.join( p.text.strip() for p in sh.text_frame.paragraphs if p.text.strip() ) if not text: continue # idx 0 視為標(biāo)題占位符非占位符形狀一律歸為正文 if getattr(sh, is_placeholder, False) and sh.placeholder_format.idx 0: title text else: body.append(text) index.append({page: page, title: title, body: body, tables: tables}) return indexiter_text_shapes里的depth主要給調(diào)試用嵌套超過(guò)兩層的形狀通常是被包裝過(guò)的圖示抽出來(lái)的文字順序會(huì)亂可以單獨(dú)標(biāo)記人工核對(duì)。parse_deck的容錯(cuò)點(diǎn)在于has_table和has_text_frame都要用getattr兜一層不同版本的庫(kù)對(duì)圖形、圖片占位符的屬性支持并不一致硬寫(xiě)屬性名會(huì)在某幾頁(yè)直接拋異常。標(biāo)題判斷只認(rèn)idx 0是有代價(jià)的——課件里如果有封面頁(yè)用了自定義文本框當(dāng)標(biāo)題這一頁(yè)的title會(huì)是空串后面按標(biāo)題建索引時(shí)記得跳過(guò)空標(biāo)題頁(yè)而不是讓它們覆蓋上一頁(yè)的標(biāo)題。2.3 文本清洗與公式歸一原始課件里的文字有兩個(gè)明顯特征。一是重復(fù)11.1.2 講現(xiàn)金股利的那段現(xiàn)金股利是以現(xiàn)金支付的股利它是股利支付的主要方式連著出現(xiàn)了兩遍二是符號(hào)混用公式寫(xiě)成E0÷(1Ds)全角除號(hào)、上下標(biāo)和普通字符混排。這兩件事都得在入庫(kù)前解決否則檢索會(huì)命中重復(fù)條目公式也沒(méi)法參與計(jì)算。import re DUP_TAIL re.compile(r^(.{6,}?)\1$) # 整段自我復(fù)制 NBSP re.compile(r[\u00a0\u3000]) MULTISPACE re.compile(r[ \t]{2,})def clean_lines(lines, min_len4): seen, out set(), [] for ln in lines: ln MULTISPACE.sub( , NBSP.sub( , ln)).strip() m DUP_TAIL.match(ln) if m: # 整段復(fù)制時(shí)只保留前半段 ln m.group(1) key ln.replace( , ) # 去空格后再判重避免排版空格造成漏判 if len(key) min_len or key in seen: continue seen.add(key) out.append(ln) return outmin_len4是為了過(guò)濾掉頁(yè)碼、一、這類(lèi)噪聲DUP_TAIL的.{6,}?用了非貪婪匹配長(zhǎng)度小于 6 的短句不會(huì)誤判成復(fù)制因?yàn)槎叹渲貜?fù)更可能是正常的排比表述。符號(hào)層面做一層歸一表就夠了不必上符號(hào)計(jì)算庫(kù)課件寫(xiě)法歸一回說(shuō)明E0÷(1Ds)E0/(1Ds)除號(hào)轉(zhuǎn)斜杠可直接參與計(jì)算M÷(1Ds)M/(1Ds)除息后每股市價(jià)公式10 派 3.5(含稅)cash_per_share 0.35每 10 股派 3.5 元換算到每股稅后派 3.15net_cash_per_share 0.315含稅口徑與稅后口徑必須分字段存注意含稅和稅后這兩個(gè)口徑一旦混用后面算除息參考價(jià)會(huì)直接錯(cuò)一個(gè)數(shù)量級(jí)。建議在數(shù)據(jù)結(jié)構(gòu)里就用兩個(gè)字段名把它們釘死不要依賴(lài)注釋說(shuō)明。3. 股利計(jì)算模型的代碼化分配順序、股票股利稀釋與除權(quán)除息價(jià)3.1 把利潤(rùn)分配程序?qū)懗捎许樞虻暮瘮?shù)11.1.1 給的是一個(gè)嚴(yán)格順序彌補(bǔ)虧損 → 計(jì)提法定公積金 → 計(jì)提任意公積金 → 向股東支付股利。順序不能調(diào)換因?yàn)楹笠徊降幕鶖?shù)依賴(lài)前一步扣完之后的余額。寫(xiě)代碼時(shí)最容易犯的錯(cuò)是把它寫(xiě)成四個(gè)獨(dú)立計(jì)算再相加那樣只要某一年虧損沒(méi)彌補(bǔ)完結(jié)果就全錯(cuò)。def allocate(profit_before_tax, accumulated_loss, registered_capital, legal_reserve0.0, tax_rate0.25, legal_ratio0.10, legal_cap_ratio0.50, arbitrary_ratio0.0): 按 11.1.1 的四步順序推演一次分配返回每步剩余可分配額 net profit_before_tax * (1 - tax_rate) # 稅后利潤(rùn) flow [(稅后利潤(rùn), round(net, 2))] net - min(accumulated_loss, net) # 1 彌補(bǔ)以前年度虧損 flow.append((彌補(bǔ)虧損后, round(net, 2))) cap registered_capital * legal_cap_ratio # 法定公積金計(jì)提上限 legal 0.0 if legal_reserve cap else min(net * legal_ratio, cap - legal_reserve) net - legal # 2 計(jì)提法定公積金 flow.append((計(jì)提法定公積金, round(net, 2))) arbitrary net * arbitrary_ratio # 3 計(jì)提任意公積金 net - arbitrary flow.append((計(jì)提任意公積金, round(net, 2))) flow.append((可向股東分配, round(net, 2))) # 4 支付股利的上限 return flow參數(shù)含義accumulated_loss是年初未彌補(bǔ)虧損用min截?cái)嗍且驗(yàn)樘潛p大于當(dāng)年稅后利潤(rùn)時(shí)只能彌補(bǔ)一部分剩余結(jié)轉(zhuǎn)到下一年legal_cap_ratio對(duì)應(yīng)法定公積金累計(jì)額達(dá)到注冊(cè)資本 50% 時(shí)可不再計(jì)提這條規(guī)則legal_reserve傳入當(dāng)前累計(jì)余額函數(shù)內(nèi)部用cap - legal_reserve做封頂arbitrary_ratio默認(rèn) 0因?yàn)槿我夤e金的計(jì)提比例由股東會(huì)決定沒(méi)有法定下限。提示allocate返回的是分配上限不是最終方案。真實(shí)決策里還要疊加現(xiàn)金余額約束——課件 11.1.2 明確寫(xiě)了支付現(xiàn)金股利除了要有累計(jì)盈余外還要有足夠的現(xiàn)金賬上有利潤(rùn)不等于賬上有錢(qián)。3.2 股票股利的稀釋公式落地股票股利不改變資產(chǎn)總額、負(fù)債總額和所有者權(quán)益總額改變的是所有者權(quán)益的內(nèi)部結(jié)構(gòu)和股數(shù)。課件給的兩個(gè)公式是核心def after_stock_dividend(e0, m, ds): e0發(fā)放前每股收益, m發(fā)放前每股市價(jià), ds每股送股比例(10送2 - 0.2) return round(e0 / (1 ds), 4), round(m / (1 ds), 4)ds的口徑必須和公告口徑對(duì)齊公告寫(xiě)10 送 2 轉(zhuǎn) 3那么ds (2 3) / 10 0.5送股和轉(zhuǎn)增在這個(gè)公式里是合并計(jì)算的因?yàn)閮烧邔?duì)股數(shù)的影響一致區(qū)別只在于資金來(lái)源是未分配利潤(rùn)還是資本公積。用e01.20、m18.00、ds0.5代進(jìn)去得到每股收益 0.80、每股市價(jià) 12.00股數(shù)增加 50%正好印證課件里股數(shù)增加、每股收益下降、每股市價(jià)下降但股東持股的市場(chǎng)價(jià)值總額不變的結(jié)論——前提是盈利總額和市盈率不變這個(gè)前提不能丟。項(xiàng)目股票股利影響是否變化所有者權(quán)益內(nèi)部結(jié)構(gòu)有影響變股數(shù)有影響增加每股收益、每股市價(jià)有影響下降每股面值無(wú)影響不變資產(chǎn)總額、負(fù)債總額、所有者權(quán)益總額無(wú)影響不變股東持股比例無(wú)影響不變3.3 寶鋼股份 2007 分紅方案的時(shí)間軸與除息價(jià)課件給的案例是 10 派 3.5含稅稅后派 3.15預(yù)案公布日 2008-03-27股東大會(huì)審議日 2008-04-28宣布日 2008-05-07股權(quán)登記日 2008-05-12除權(quán)除息日 2008-05-13派息日 2008-05-16。這張時(shí)間軸的關(guān)鍵在于股權(quán)登記日收盤(pán)時(shí)持有的人有資格拿股利除息日當(dāng)天買(mǎi)入的人沒(méi)有價(jià)格在除息日開(kāi)盤(pán)時(shí)做技術(shù)性下調(diào)。from datetime import date def ex_rights_price(prev_close, cash_per_share, share_ratio): 除權(quán)除息參考價(jià) (前收盤(pán)價(jià) - 每股現(xiàn)金股利) / (1 每股送轉(zhuǎn)比例) return round((prev_close - cash_per_share) / (1 share_ratio), 2) # 寶鋼案例只有現(xiàn)金分紅無(wú)送轉(zhuǎn) print(ex_rights_price(9.80, 0.35, 0.0)) # 9.45 print(ex_rights_price(9.80, 0.315, 0.0)) # 9.48按稅后口徑同一個(gè)前收盤(pán)價(jià) 9.80含稅口徑算出 9.45稅后口徑算出 9.48差 3 分錢(qián)。差異來(lái)源不是公式錯(cuò)而是股東實(shí)際到手多少這個(gè)口徑不一致——含稅口徑下扣掉的 0.35 里有 0.035 是代扣的稅交易所公布的除息參考價(jià)通常按含稅股利計(jì)算所以對(duì)賬時(shí)先確認(rèn)對(duì)方用的哪個(gè)口徑。這里share_ratio傳 0 是因?yàn)閷氫撛摯畏桨钢慌涩F(xiàn)不送轉(zhuǎn)如果方案是10 派 3.5 送 2cash_per_share 0.35、share_ratio 0.2兩步同時(shí)生效先減后除順序同樣不能顛倒。4. 復(fù)現(xiàn)62 家鐵公雞篩選口徑pandas 與 SQL 雙路校驗(yàn)4.1 把篩選規(guī)則拆成可執(zhí)行的條件鏈課件里那段統(tǒng)計(jì)描述信息量很大但寫(xiě)成文字后步驟是糾纏的。把它拆成條件鏈?zhǔn)沁@樣的在 1826 家 A 股公司里先剔除過(guò)去三年期末平均未分配利潤(rùn)為負(fù)值的剩 1388 家計(jì)算三年平均未分配利潤(rùn) / 三年平均凈資產(chǎn)全市場(chǎng)該比值平均為 11.95%剔除低于 11.95% 的再剔除三年平均未分配利潤(rùn)低于 1 億元的剩 852 家最后剔除三年內(nèi)有過(guò)分紅記錄的公司和期間新上市的公司得到 62 家。按行業(yè)分布化工 8 家居首醫(yī)藥生物 6 家房地產(chǎn)和機(jī)械設(shè)備各 5 家。篩選環(huán)節(jié)數(shù)據(jù)操作易錯(cuò)點(diǎn)剔除虧損avg_up 0用期末值還是三年均值課件用的是均值計(jì)算分紅能力比值avg_up / avg_na分母是三年平均凈資產(chǎn)不是平均總資產(chǎn)門(mén)檻過(guò)濾ratio 0.1195均值隨樣本變化硬編碼后換年份會(huì)失真規(guī)模過(guò)濾avg_up 1e8億元與元單位換算分紅歷史過(guò)濾三年內(nèi)dividend_paid 0曾經(jīng)分紅指預(yù)案還是實(shí)際派息口徑要統(tǒng)一上市年限過(guò)濾三年數(shù)據(jù)齊全新上市公司數(shù)據(jù)不足三年需單獨(dú)排除4.2 pandas 實(shí)現(xiàn)import pandas as pd MIN_RATIO, MIN_PROFIT 0.1195, 1e8 # df 長(zhǎng)表結(jié)構(gòu)code, year, undist_profit(期末未分配利潤(rùn)), net_assets(期末凈資產(chǎn)), dividend_paid g df.groupby(code).agg( avg_up(undist_profit, mean), avg_na(net_assets, mean), div_years(dividend_paid, lambda s: (s 0).sum()), yrs(year, nunique), ) pool g[g.avg_up 0].copy() # 剔除平均未分配利潤(rùn)為負(fù) pool[ratio] pool.avg_up / pool.avg_na pool pool[(pool.ratio MIN_RATIO) (pool.avg_up MIN_PROFIT)] iron pool[(pool.div_years 0) (pool.yrs 3)] # 有分紅能力但三年未分紅 print(len(pool), len(iron)) # 期望 852 / 62agg里用nunique而不是count統(tǒng)計(jì)年數(shù)是因?yàn)樨?cái)務(wù)表里同一家公司同一年可能因?yàn)楦娉霈F(xiàn)兩條記錄count會(huì)把它算成兩年。div_years用匿名函數(shù)統(tǒng)計(jì)派息大于 0 的年份數(shù)直接寫(xiě)(s 0).sum()比先過(guò)濾再計(jì)數(shù)少一次數(shù)據(jù)搬運(yùn)。ratio用pool.avg_up / pool.avg_na而不是逐行除是為了避免對(duì)已過(guò)濾掉的空值做無(wú)意義的運(yùn)算。4.3 SQL 版本與結(jié)果對(duì)賬生產(chǎn)環(huán)境里這類(lèi)篩選往往跑在數(shù)倉(cāng)上把同樣的口徑翻譯成 SQL 便于復(fù)用和審計(jì)WITH base AS ( SELECT code, AVG(CASE WHEN year BETWEEN 2007 AND 2009 THEN undist_profit END) AS avg_up, AVG(CASE WHEN year BETWEEN 2007 AND 2009 THEN net_assets END) AS avg_na, SUM(CASE WHEN year BETWEEN 2007 AND 2009 AND dividend_paid 0 THEN 1 ELSE 0 END) AS div_years, COUNT(DISTINCT year) AS yrs FROM fin_year GROUP BY code ) SELECT code, avg_up, avg_na, ROUND(avg_up / avg_na, 4) AS ratio FROM base WHERE avg_up 0 AND avg_up / avg_na 0.1195 -- 分紅能力比值門(mén)檻 AND avg_up 100000000 -- 平均未分配利潤(rùn)不低于 1 億元 AND div_years 0 AND yrs 3 ORDER BY ratio DESC;跑完兩條路徑重點(diǎn)比對(duì)家數(shù)和排序。按課件口徑比值最高的是遼寧成大三年年均未分配利潤(rùn) 34.59 億元、年均凈資產(chǎn) 56.7 億元比值 61.02%緊隨其后的七喜控股是 2.77 億 / 6.95 億 39.78%比值超過(guò) 30% 的一共 16 家。如果兩個(gè)實(shí)現(xiàn)出來(lái)的頭部名單不一致八成是分母口徑或年份范圍出了問(wèn)題而不是篩選邏輯本身。注意課件里的 11.95% 是全市場(chǎng)均值屬于樣本相關(guān)的門(mén)檻。把它硬編碼進(jìn)腳本只適合復(fù)現(xiàn)當(dāng)期結(jié)論換成其他年份的數(shù)據(jù)應(yīng)當(dāng)先重算均值再套用否則篩出來(lái)的公司數(shù)量會(huì)劇烈漂移。5. 占位符批量替換把課件改造成可復(fù)用的股利政策教學(xué)模板課件里的案例數(shù)字是死的但結(jié)構(gòu)是可復(fù)用的。想批量生成不同參數(shù)下的講解版本最省事的做法是把案例頁(yè)做成占位符模板再用腳本灌數(shù)據(jù)??釉谟?PPT 的文本經(jīng)常被拆成多個(gè) run——同一段話(huà)說(shuō)了一半換字體就斷成兩個(gè) run直接對(duì)text_frame.text整體賦值會(huì)把字體、字號(hào)、顏色全部沖掉。from pptx import Presentation def fill_slide(slide, mapping): run 級(jí)替換保留原有字符格式 for sh in slide.shapes: if not getattr(sh, has_text_frame, False) or not sh.has_text_frame: continue for para in sh.text_frame.paragraphs: # 先嘗試把跨 run 的占位符合并到首 run避免 {{ }} 被拆開(kāi) joined .join(r.text for r in para.runs) for key, val in mapping.items(): if key in joined and not any(key in r.text for r in para.runs): para.runs[0].text joined.replace(key, str(val)) for r in para.runs[1:]: r.text break for run in para.runs: for key, val in mapping.items(): if key in run.text: run.text run.text.replace(key, str(val)) prs Presentation(ch11_template.pptx) ctx {{{EPS0}}: 1.20, {{PRICE}}: 18.00, {{DS}}: 0.5, {{CASH}}: 0.35, {{REG_DATE}}: 2008-05-12} fill_slide(prs.slides[8], ctx) prs.save(ch11_case_v2.pptx)替換分兩條路徑j(luò)oined那條處理占位符被 run 拆開(kāi)的情況代價(jià)是丟失該段內(nèi)部的混合格式所以只在檢測(cè)到占位符不完整落在任何單個(gè) run 里時(shí)才走正常情況走最后那段逐 run 替換格式完全保留。mapping的鍵用雙花括號(hào)包住是為了避免正文里正常出現(xiàn)的每股收益被誤替換成變量值。生成完必須回讀校驗(yàn)不能只看文件能不能打開(kāi)校驗(yàn)項(xiàng)檢查方法失敗信號(hào)占位符殘留全文搜{{有殘留說(shuō)明該段被拆 run 或形狀未遍歷數(shù)值一致性回讀頁(yè)面數(shù)字與計(jì)算結(jié)果比對(duì)小數(shù)位不符、口徑混用格式完整性抽查字體與字號(hào)整段變默認(rèn)宋體說(shuō)明走了合并分支頁(yè)數(shù)結(jié)構(gòu)len(prs.slides)與模板比對(duì)頁(yè)數(shù)變化通常是母版被改寫(xiě)回讀校驗(yàn)可以直接復(fù)用第 2 章的parse_deck把生成后的文件重新解析成 JSON再和灌進(jìn)去的ctx做集合比對(duì)——模板數(shù)量一多人工翻頁(yè)是翻不過(guò)來(lái)的。這套流程跑順之后把ctx換成從 Excel 讀進(jìn)來(lái)的一批案例參數(shù)一次生成幾十份不同分紅方案的教學(xué)材料也只是循環(huán)次數(shù)的問(wèn)題真正需要盯緊的還是那兩個(gè)老地方股利口徑是含稅還是稅后以及送轉(zhuǎn)比例有沒(méi)有把送股和轉(zhuǎn)增合并計(jì)算。本文還有配套的精品資源點(diǎn)擊獲取