最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python實(shí)現(xiàn)一鍵批量生成員工名片

 更新時(shí)間:2025年09月29日 09:12:48   作者:IT小本本  
這篇文章主要我等會(huì)詳細(xì)介紹了如何使用Python從Excel導(dǎo)入員工信息,一鍵批量生成標(biāo)準(zhǔn)統(tǒng)一的PDF名片,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下

手動(dòng)制作幾十上百?gòu)埫遣皇浅罎??重?fù)復(fù)制粘貼、調(diào)整字體對(duì)齊到眼瞎,還總怕漏改姓名/職位——最后出來的名片格式還參差不齊……

今天給大家分享一個(gè)「效率神器」:用幾行Python代碼,從Excel導(dǎo)入員工信息,一鍵批量生成標(biāo)準(zhǔn)統(tǒng)一的PDF名片。不用懂復(fù)雜編程,跟著步驟走,小白也能10分鐘上手!

一、先看效果:10秒生成50張標(biāo)準(zhǔn)名片

只要提前把員工信息整理成Excel表格(公司、姓名、部門、職位、電話),運(yùn)行代碼后,直接輸出A4格式的PDF——每張A4紙上自動(dòng)排列8張名片(2列4行),打印后裁剪就能用,格式100%統(tǒng)一!

Excel數(shù)據(jù)示例(列名必須和下面一致,不能錯(cuò)?。?/p>

公司姓名部門職位電話
某某科技有限公司張三產(chǎn)品部產(chǎn)品經(jīng)理138xxxx1234
某某科技有限公司李四技術(shù)部前端開發(fā)139xxxx5678
某某科技有限公司王五行政部行政專員137xxxx9012

生成的PDF名片效果

淺灰色背景+藍(lán)色分隔線,公司名、姓名、職位清晰排版,沒有多余雜亂格式,打印裁剪后就是標(biāo)準(zhǔn)名片(約90mm×54mm,代碼中可調(diào)整尺寸)。

二、核心原理:3個(gè)步驟搞定批量生成

這套代碼的邏輯很簡(jiǎn)單,本質(zhì)是「讀數(shù)據(jù)→定格式→畫名片」,核心分3個(gè)模塊,我們不用深究代碼細(xì)節(jié),知道怎么用就行!

1. 準(zhǔn)備工作:2件事要提前做

在運(yùn)行代碼前,先完成這2步,避免踩坑:

(1)整理Excel員工信息

按照上面的表格格式,把需要做名片的員工信息填好,保存為employee_data.xlsx(名字可以改,但后面代碼里要對(duì)應(yīng))。

重點(diǎn):列名必須是“公司”“姓名”“部門”“職位”“電話”,少一個(gè)或錯(cuò)一個(gè),代碼都會(huì)報(bào)錯(cuò)!

(2)安裝依賴庫(kù)

代碼需要3個(gè)Python庫(kù)來實(shí)現(xiàn)“讀Excel”“畫PDF”“找字體”,打開電腦的「命令提示符」(Windows)或「終端」(Mac),復(fù)制粘貼下面的命令,按回車安裝:

pip install pandas reportlab matplotlib

如果提示“pip不是內(nèi)部命令”,百度搜“Python添加環(huán)境變量”,簡(jiǎn)單設(shè)置下就行。

2. 代碼解析:關(guān)鍵功能看這里

下面是完整代碼(可以直接復(fù)制用),我標(biāo)了重點(diǎn),告訴大家哪些地方可以改,哪些不能動(dòng):

# 導(dǎo)入pandas庫(kù),用于數(shù)據(jù)處理和Excel文件讀取
import pandas as pd
# 從reportlab庫(kù)中導(dǎo)入A4頁(yè)面尺寸
from reportlab.lib.pagesizes import A4
# 從reportlab庫(kù)中導(dǎo)入canvas模塊,用于創(chuàng)建PDF文檔
from reportlab.pdfgen import canvas
# 從reportlab庫(kù)中導(dǎo)入pdfmetrics模塊,用于字體度量
from reportlab.pdfbase import pdfmetrics
# 從reportlab庫(kù)中導(dǎo)入TTFont類,用于處理TrueType字體
from reportlab.pdfbase.ttfonts import TTFont
# 從reportlab庫(kù)中導(dǎo)入HexColor類,用于使用十六進(jìn)制顏色代碼
from reportlab.lib.colors import HexColor
# 導(dǎo)入os模塊,用于文件系統(tǒng)操作
import os
# 導(dǎo)入platform模塊,用于獲取系統(tǒng)信息
import platform
# 導(dǎo)入matplotlib的字體管理器,用于查找系統(tǒng)字體
import matplotlib.font_manager as fm

# 定義函數(shù),獲取系統(tǒng)中的中文字體
def get_chinese_font():
    # 獲取當(dāng)前操作系統(tǒng)名稱
    system = platform.system()
    # 初始化字體列表
    fonts = []
    
    # 定義常見中文字體路徑列表
    common_chinese_fonts = [
        # Windows 常用中文字體
        'C:/Windows/Fonts/simhei.ttf',  # 黑體
        'C:/Windows/Fonts/simsun.ttc',  # 宋體
        'C:/Windows/Fonts/simkai.ttf',  # 楷體
        'C:/Windows/Fonts/msyh.ttf',    # 微軟雅黑
        
        # macOS 常用中文字體
        '/System/Library/Fonts/PingFang.ttc',  # 蘋方
        '/Library/Fonts/Arial Unicode.ttf',
        
        # Linux 常用中文字體
        '/usr/share/fonts/truetype/arphic/uming.ttc',
        '/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf',
    ]
    
    # 遍歷常見中文字體路徑列表
    for font_path in common_chinese_fonts:
        # 檢查字體文件是否存在
        if os.path.exists(font_path):
            # 如果存在,返回字體路徑
            return font_path
    
    # 如果上面的字體都不存在,嘗試從matplotlib獲取系統(tǒng)字體
    try:
        # 獲取系統(tǒng)中所有存在的字體路徑
        fonts = [f for f in fm.findSystemFonts() if os.path.exists(f)]
        # 遍歷所有字體
        for font in fonts:
            try:
                # 檢查字體名稱中是否包含非ASCII字符(即中文字符)
                if any([True for c in fm.FontProperties(fname=font).get_name() if ord(c) > 127]):
                    # 如果找到中文字體,返回字體路徑
                    return font
            except:
                # 如果處理出錯(cuò),繼續(xù)檢查下一個(gè)字體
                continue
    except:
        # 如果獲取系統(tǒng)字體出錯(cuò),忽略錯(cuò)誤
        pass
    
    # 如果找不到中文字體,返回None
    return None

# 定義函數(shù),讀取Excel數(shù)據(jù)
def read_excel(file_path):
    try:
        # 使用pandas讀取Excel文件
        df = pd.read_excel(file_path)
        # 返回?cái)?shù)據(jù)框
        return df
    except Exception as e:
        # 如果讀取出錯(cuò),打印錯(cuò)誤信息
        print(f"讀取Excel文件時(shí)出錯(cuò): {e}")
        # 返回None
        return None

# 定義函數(shù),創(chuàng)建PDF名片
def create_business_cards(df, output_file):
    # 獲取中文字體路徑
    chinese_font_path = get_chinese_font()
    
    # 檢查是否找到中文字體
    if chinese_font_path:
        # 設(shè)置字體名稱
        font_name = 'ChineseFont'
        # 注冊(cè)中文字體
        pdfmetrics.registerFont(TTFont(font_name, chinese_font_path))
        # 打印使用的字體路徑
        print(f"使用中文字體: {chinese_font_path}")
    else:
        # 如果找不到中文字體,使用默認(rèn)字體
        font_name = 'Helvetica'  # 默認(rèn)字體
        # 打印警告信息
        print("警告: 找不到中文字體,中文可能顯示為亂碼")
    
    # 創(chuàng)建PDF文檔,使用A4頁(yè)面大小
    c = canvas.Canvas(output_file, pagesize=A4)
    # 獲取A4頁(yè)面的寬度和高度
    width, height = A4
    
    # 設(shè)置名片尺寸和布局參數(shù)
    card_width = 250  # 名片寬度
    card_height = 150  # 名片高度
    margin = 20  # 邊距
    cards_per_row = 2  # 每行名片數(shù)量
    cards_per_column = 4  # 每列名片數(shù)量
    
    # 遍歷數(shù)據(jù)框中的每一行
    for i, record in df.iterrows():
        # 計(jì)算當(dāng)前名片在頁(yè)面中的位置
        row_num = i % (cards_per_row * cards_per_column)
        col = row_num % cards_per_row  # 計(jì)算列位置
        row = row_num // cards_per_row  # 計(jì)算行位置
        
        # 計(jì)算名片在頁(yè)面上的x坐標(biāo)
        x = margin + col * (card_width + margin)
        # 計(jì)算名片在頁(yè)面上的y坐標(biāo)
        y = height - margin - (row + 1) * card_height - row * margin
        
        # 檢查是否需要添加新頁(yè)面
        if row_num == 0 and i > 0:
            # 添加新頁(yè)面
            c.showPage()
        
        # 繪制名片背景
        c.setFillColor(HexColor('#f8f8f8'))  # 設(shè)置填充顏色
        c.roundRect(x, y, card_width, card_height, 5, fill=1, stroke=0)  # 繪制圓角矩形
        
        # 繪制名片邊框
        c.setStrokeColor(HexColor('#cccccc'))  # 設(shè)置邊框顏色
        c.setLineWidth(0.5)  # 設(shè)置邊框?qū)挾?
        c.roundRect(x, y, card_width, card_height, 5, fill=0, stroke=1)  # 繪制圓角矩形邊框
        
        # 繪制公司名稱
        c.setFillColor(HexColor('#2c3e50'))  # 設(shè)置文字顏色
        c.setFont(font_name, 14)  # 設(shè)置字體和大小
        company = str(record['公司'])  # 獲取公司名稱
        c.drawString(x + 15, y + card_height - 25, company)  # 在名片上繪制公司名稱
        
        # 繪制分隔線
        c.setStrokeColor(HexColor('#3498db'))  # 設(shè)置線條顏色
        c.setLineWidth(1)  # 設(shè)置線條寬度
        c.line(x + 15, y + card_height - 35, x + card_width - 15, y + card_height - 35)  # 繪制分隔線
        
        # 繪制姓名(較大字體)
        c.setFillColor(HexColor('#2c3e50'))  # 設(shè)置文字顏色
        c.setFont(font_name, 12)  # 設(shè)置字體和大小
        name = str(record['姓名'])  # 獲取姓名
        c.drawString(x + 15, y + card_height - 60, f"姓名:{name}")  # 在名片上繪制姓名
        
        # 繪制其他信息
        c.setFont(font_name, 10)  # 設(shè)置字體和大小
        c.setFillColor(HexColor('#555555'))  # 設(shè)置文字顏色
        
        department = str(record['部門'])  # 獲取部門
        c.drawString(x + 15, y + card_height - 80, f"部門:{department}")  # 在名片上繪制部門
        
        position = str(record['職位'])  # 獲取職位
        c.drawString(x + 15, y + card_height - 100, f"職位:{position}")  # 在名片上繪制職位
        
        phone = str(record['電話'])  # 獲取電話
        c.drawString(x + 15, y + card_height - 120, f"電話:{phone}")  # 在名片上繪制電話
    
    # 保存PDF文件
    c.save()
    # 打印成功信息
    print(f"名片已生成到文件: {output_file}")

# 主程序入口
if __name__ == "__main__":
    # 指定Excel文件路徑
    excel_file = "employee_data.xlsx"  # 請(qǐng)根據(jù)實(shí)際情況修改
    
    # 指定輸出PDF文件路徑
    pdf_file = "員工名片1.pdf"
    
    # 讀取Excel數(shù)據(jù)
    data = read_excel(excel_file)
    
    # 檢查是否成功讀取數(shù)據(jù)
    if data is not None:
        # 創(chuàng)建名片
        create_business_cards(data, pdf_file)

3. 一步一步用:小白也能會(huì)

1.復(fù)制代碼:把上面的代碼復(fù)制到記事本里,然后把文件后綴改成.py(比如生成名片.py)。

2.改路徑:打開.py文件,找到if __name__ == "__main__":下面的兩行:

  • excel_file:改成你的Excel文件的完整路徑(比如"D:/工作/員工信息.xlsx");
  • pdf_file:改成你想保存PDF的路徑(比如"D:/工作/新員工名片.pdf")。
  • 路徑里的斜杠要寫/,不是\!比如C:/Files/,不是C:\Files\。

3.運(yùn)行代碼:雙擊.py文件,或在終端里輸入python 生成名片.py,等待幾秒。

4.看結(jié)果:如果提示“搞定!名片在:xxx”,就去對(duì)應(yīng)的路徑找PDF;如果出錯(cuò),看提示(比如“讀Excel出錯(cuò)”,可能是Excel路徑錯(cuò)了)。

三、避坑指南:這些問題別踩

1.中文亂碼

代碼會(huì)自動(dòng)找中文字體,如果還是亂碼,手動(dòng)指定字體路徑:

找到common_chinese_fonts列表,在里面加一行你電腦里的中文字體路徑(比如Windows的C:/Windows/Fonts/msyh.ttc,Mac的/Library/Fonts/華文黑體.ttf)。

2.Excel列名錯(cuò)了

必須是“公司”“姓名”“部門”“職位”“電話”,少一個(gè)字、多一個(gè)字都不行(比如“公司名稱”就會(huì)報(bào)錯(cuò))。

3.PDF保存不了

檢查pdf_file的路徑是否存在(比如你寫了"D:/工作/名片.pdf",但“工作”文件夾不存在,就會(huì)保存失?。?,先建好文件夾再運(yùn)行。

4.想改名片樣式

  • 改尺寸:調(diào)card_widthcard_height(比如想做更大的名片,改成card_width=300,card_height=180);
  • 改顏色:把HexColor('#xxx')里的xxx換成顏色代碼(百度“顏色代碼查詢”,比如紅色是#ff0000);
  • 加logo:在畫背景后加一行c.drawImage("logo.png", x+15, y+10, width=50, height=50),把logo.png換成你的logo路徑和尺寸。

以上就是使用Python實(shí)現(xiàn)一鍵批量生成員工名片的詳細(xì)內(nèi)容,更多關(guān)于Python生成員工名片的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用Python構(gòu)建一個(gè)高效的日志處理系統(tǒng)

    使用Python構(gòu)建一個(gè)高效的日志處理系統(tǒng)

    這篇文章主要為大家詳細(xì)講解了如何使用Python開發(fā)一個(gè)專業(yè)的日志分析工具,能夠自動(dòng)化處理、分析和可視化各類日志文件,大幅提升運(yùn)維效率,需要的可以了解下
    2025-07-07
  • Python qrcode 生成一個(gè)二維碼的實(shí)例詳解

    Python qrcode 生成一個(gè)二維碼的實(shí)例詳解

    在本篇文章里小編給大家整理的是關(guān)于Python qrcode 生成一個(gè)二維碼的實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-02-02
  • Python函數(shù)作用域示例詳解

    Python函數(shù)作用域示例詳解

    本文介紹了Python中的LEGB作用域規(guī)則,詳細(xì)解析了變量查找的四個(gè)層級(jí),通過具體代碼示例,展示了各層級(jí)的變量訪問規(guī)則和特性,對(duì)python函數(shù)作用域相關(guān)知識(shí)感興趣的朋友一起看看吧
    2025-07-07
  • 詳解解決jupyter不能使用pytorch的問題

    詳解解決jupyter不能使用pytorch的問題

    這篇文章主要介紹了詳解解決jupyter不能使用pytorch的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Pytorch數(shù)據(jù)拼接與拆分操作實(shí)現(xiàn)圖解

    Pytorch數(shù)據(jù)拼接與拆分操作實(shí)現(xiàn)圖解

    這篇文章主要介紹了Pytorch數(shù)據(jù)拼接與拆分操作實(shí)現(xiàn)圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • PyQt教程之自定義組件Switch?Button的實(shí)現(xiàn)

    PyQt教程之自定義組件Switch?Button的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了PyQt中如何實(shí)現(xiàn)自定義組件Switch?Button,文中的示例代碼簡(jiǎn)潔易懂,具有一定的學(xué)習(xí)價(jià)值,感興趣的可以了解一下
    2023-05-05
  • Python中的線程同步的常用方法總結(jié)

    Python中的線程同步的常用方法總結(jié)

    在Python多線程編程中,我們常常需要處理多個(gè)線程同時(shí)訪問共享數(shù)據(jù)的情況,為了防止數(shù)據(jù)在多線程之間出現(xiàn)沖突,我們需要對(duì)線程進(jìn)行同步。本文將詳細(xì)介紹Python中的線程同步的幾種常用方法,需要的朋友可以參考下
    2023-06-06
  • python?虛擬環(huán)境詳解

    python?虛擬環(huán)境詳解

    這篇文章主要為大家介紹了python?虛擬環(huán)境,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助<BR>
    2021-12-12
  • Python實(shí)現(xiàn)創(chuàng)建詞云的示例詳解

    Python實(shí)現(xiàn)創(chuàng)建詞云的示例詳解

    詞云一般是根據(jù)輸入的大量詞語生成的,如果某個(gè)詞語出現(xiàn)的次數(shù)越多,那么相應(yīng)的大小就會(huì)越大,本文將利用wordcloud模塊實(shí)現(xiàn)詞云生成,需要的可以參考下
    2023-10-10
  • python在linux系統(tǒng)下獲取系統(tǒng)內(nèi)存使用情況的方法

    python在linux系統(tǒng)下獲取系統(tǒng)內(nèi)存使用情況的方法

    這篇文章主要介紹了python在linux系統(tǒng)下獲取系統(tǒng)內(nèi)存使用情況的方法,涉及Python在Linux平臺(tái)下獲取系統(tǒng)硬件信息的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05

最新評(píng)論

星子县| 楚雄市| 会东县| 将乐县| 牙克石市| 平乡县| 温宿县| 上饶市| 鹰潭市| 海南省| 东乡| 西乌| 双流县| 亚东县| 台南市| 富宁县| 出国| 梧州市| 永平县| 南皮县| 甘孜县| 辽阳县| 昭觉县| 和平区| 麻城市| 南阳市| 浙江省| 灵川县| 密云县| 兰溪市| 鹤壁市| 太原市| 枞阳县| 东至县| 嘉禾县| 襄垣县| 获嘉县| 大邑县| 襄樊市| 乡宁县| 长子县|