Python新手處女作:Excel自動錄入&Excel表格快速合併(附有原始碼)

Jacob6Lu發表於2020-03-10

Jacob_E辦公程式

通過一個月的Python語法基礎課學習,小編也終於寫出了自己的第一個程式!完成程式的那一刻,小編激動的心臟都要跳出來了!開心的像個兩百斤的大胖子!呼呼呼~話不不多說,小編這就給大家介紹一下自己編寫程式。
在這裡插入圖片描述

Jacob_E功能一:Excel資料自動錄入

我們在日常生活中都會用Excel進行資料錄入,十幾條資料的錄入是比較簡單的,可是當資料達到上百條甚至更多,面對密密麻麻的Excel表格的感覺是無以言表的,而且進行上百條的資料錄入很容易出錯。小編對此深有感觸!
小編藉助Python解決了這一問題大大提高了效率。根據電腦的提示輸入相應資料,即使資料有很多,在輸入的過程當中也不會暈頭轉向。即便在自己啟動程式之前沒有建立Excel表格,根據電腦的指令隨便輸入“資料名.csv"的形式,程式會自動幫你建立Excel表格,在輸入的過程中終端也會保留你資料的痕跡,這樣也方便我們對資料的核對。除此之外,這款程式還是很有溫度的,它會問你的名字並向你問好,等你資料錄入完之後還會鼓勵一下你!(小編是不是特別有心~~嘿嘿!)
在這裡插入圖片描述
在這裡插入圖片描述## Jacob _E功能二:Excel表格的自動合併

Jacob_E第二個功能就是多個Excel表格的快速合併。說到這小編不得不說出我在這件事情上的辛酸經歷,小編在沒有學習Python之前接到過這樣一個任務——將整個學院各班的資訊表合在一張表上…說到這想必大家已經知道我經歷了什麼,我在這個任務上鏖戰了一上午,午飯都沒有吃。就是把表格複製貼上到一張新的表格上,幹到最後已經心力交疲,眼睛也由於長時間盯著螢幕也起了一個膿包,到最後資料整理也錯誤百出…
而這個程式可以瞬間合併上百個Excel表格,不費吹灰之力。小編給這個程式編入了自動搜尋.xlsx、.csv字尾的Excel表格(最常用的Excel字尾形式),搜尋完畢在終端顯示待合併表格的數量,這樣方便我們核查是否漏了哪一個表格。並且根據自己處理Excel的型別選擇相應的字尾。
在這裡插入圖片描述
在這裡插入圖片描述

感受

寫到最後,小編也是留下了激動的淚水!從構思到程式碼的實現,小編作為一名新手也是經歷了太多的坎坷,無數次的BUG、無數次的徹夜難眠、無數次的資料搜尋,甚至晚上睡覺的時候都在構思要如何實現下一步功能。
作為一名Python入門新手,小編也非常渴望與大家相互交流、互相進步,喜歡我的小夥伴,可以掃描下方二維碼關注小編的微信公眾號,我們一起開啟Python的魔法世界!!!
在這裡插入圖片描述

原始碼

在這裡插入程式碼片
```print("""
author@Jacob Lu
date: 2020/2/26
""")
import xlrd
import xlsxwriter  # 將檔案寫入Excel的包
import glob
import os
import pandas as pd
import time
import csv

Lu=True
while Lu:
    print('1.日常內務查詢錄入系統\n2.Excel檔案合併系統(.xlsx型別)\n3.Excel檔案合併系統(.cvs型別)\n4.退出系統\n')
    print("""溫馨提示:選擇合併功能之前請務必將你所要處理的檔案與該程式放在同一資料夾中!\n""")
    choice = int(input('請輸入數字選擇對應的功能:'))

    if choice==1:
        print('小可愛,你好!歡迎使用海洋學院宿管部Excel日常檢查情況錄入程式!')
        time.sleep(3)
        print('——————————————————————❁—————————————————————————❁———————————————————————————❁——————————————————————————' )
        your_name=input('你叫什麼名字?好讓我知道你的名字!:')
        print(your_name+'你好!下面請根據提示輸入相應的資料。')
        time.sleep(2)
        book=input('請輸入你要開啟的Excel表的名字【注意檔名詞的字尾必須是.csv,否則不是Excel的形式!】:')
        print('———————————————————————————————————Welcome to the program!——————————————————————————————————————————————' )
        date=input('請輸入今天的日期:')
        #呼叫csv模組
        with open(book, 'a', newline='',encoding='GBK') as csvfile:
        #呼叫open()函式開啟csv檔案,傳入引數:檔名“assets.csv”、追加模式“a”、newline=''。
            writer = csv.writer(csvfile, dialect='excel')
        # 用csv.writer()函式建立一個writer物件。
            header=['日期', '班級', '宿舍', '床鋪', '姓名', '扣分','扣分原因']
            writer.writerow(header)
        Thing=True
        while Thing:
            with open(book, 'a', newline='',encoding='GBK') as csvfile:
                writer = csv.writer(csvfile, dialect='excel')
                the_class=input('請輸入所在區隊:')
                number=input('請輸入宿舍號:')
                bed_number=input('請輸入床鋪號:')
                name=input('請輸入姓名:')
                deduct_points=1
                question=input('請輸入所存在的問題:')
                the_all=[date,the_class,str(20)+number,bed_number,name,deduct_points,question]
                writer.writerow(the_all)
                print('————————————————————————————————————————————————————————————————————————————————————————————————————' )
                if_next=input('是否繼續輸入,繼續請按任意鍵,結束請按n:')
                print('————————————————————————————————————————————————————————————————————————————————————————————————————' )
                if if_next=='n':
                    Thing=False
                else:
                    Thing=True
        print('恭喜你!輸入完畢!辛苦了!給你點個贊!!!')
        break
             
    elif choice==2:
        print('小可愛,你好!歡迎使用海洋學院宿管部多個Excel.xlsx合併程式!')
        time.sleep(3)
        print('——————————————————————❁—————————————————————————❁———————————————————————————❁——————————————————————————' )
        your_name=input('你叫什麼名字?好讓我知道你的名字!:')
        print(your_name+'你好!下面請根據提示輸入相應的資料。')
        print('———————————————————————————————————Welcome to the program!——————————————————————————————————————————————' )
        time.sleep(1.5)
        target_xls =input('請輸入最終合併Excel所在路徑:') 
        csv_list = glob.glob('*.xlsx') #檢視同資料夾下的csv檔案數
        print(u'共發現%s個xlsx檔案'% len(csv_list))
        print(u'正在處理............')
        data = []
        for i in csv_list:
            wb = xlrd.open_workbook(i)  # 先開啟第一個檔案1.xlsx
            for sheet in wb.sheets():       # 讀取 表中的 工作表sheet的個數
                for rownum in range(sheet.nrows):   # 依次讀取一個sheet中的資料
                    data.append(sheet.row_values(rownum))  # 把其資料放入 data[]列表中
        workbook = xlsxwriter.Workbook(target_xls)  # 建立了一個名字叫做3.xlsx , Excel表格檔案
        worksheet = workbook.add_worksheet()  # 建立sheet,
        font = workbook.add_format({"font_size":14})  # 表格中值(字型)的大小
        for i in range(len(data)):            # 從data列表中讀取資料
            for j in range(len(data[i])):
                worksheet.write(i, j, data[i][j], font)
        workbook.close()
        print(u'資料輸入完畢!歡迎下次光臨!')
        break 

    elif choice==3:
        print('小可愛,你好!歡迎使用海洋學院宿管部多個Excel.csv合併程式!')
        time.sleep(3)
        print('——————————————————————❁—————————————————————————❁———————————————————————————❁——————————————————————————' )
        your_name=input('你叫什麼名字?好讓我知道你的名字!:')
        print(your_name+'你好!下面請根據提示輸入相應的資料。')
        print('———————————————————————————————————Welcome to the program!——————————————————————————————————————————————' )
        time.sleep(1.5)
        def hebing():
            csv_list = glob.glob('*.csv') #檢視同資料夾下的csv檔案數
            print(u'共發現%s個csv檔案'% len(csv_list))
            print(u'正在處理............')
            for i in csv_list: #迴圈讀取同資料夾下的csv檔案
                fr = open(i,'r',encoding='gbk').read()
                with open('result.csv','a',encoding='gbk') as f: #將結果儲存為result.csv
                    f.write(fr)
            print(u'合併完畢!')
        if __name__ == '__main__':
            hebing()
            break
    elif choice==4:
        print('拜拜,歡迎下次光臨!')
        break
    else:
        print('小可愛,請按照規則選擇功能選項,不要開車哦!^_^')
        print('——————————————————————❁—————————————————————————❁———————————————————————————❁——————————————————————————' )
        time.sleep(3)
        continue

相關文章