批量提取excel固定行列到一個excel中去

from openpyxl import Workbook
import openpyxl
import os


# pip install  openpyxl==2.6.4

# Copy range of cells as a nested list
# Takes: start cell, end cell, and sheet you want to copy from.
def copy_range(start_col, start_row, end_col, end_row, sheet):
    range_selected = []
    # Loops through selected Rows
    for i in range(start_row, end_row + 1, 1):
        # Appends the row to a RowSelected list
        row_selected = []
        for j in range(start_col, end_col + 1, 1):
            row_selected.append(sheet.cell(row=i, column=j).value)
        # Adds the RowSelected List and nests inside the rangeSelected
        range_selected.append(row_selected)

    return range_selected


# Paste range
# Paste data from copy_range into template sheet
def paste_range(start_col, start_row, end_col, end_row,
                sheet_receiving, copied_data):
    count_row = 0
    for i in range(start_row, end_row + 1, 1):
        count_col = 0
        for j in range(start_col, end_col + 1, 1):
            sheet_receiving.cell(row=i, column=j).value = \
                copied_data[count_row][count_col]

            count_col += 1
        count_row += 1


def main():
    # output sheet
    output = Workbook()
    output.save("result.xlsx")
    output = openpyxl.load_workbook("result.xlsx")  # Add file name
    output_sheet = output.active

    for i in range(2, 13):
        input = openpyxl.load_workbook("{}.xlsx".format(str(i)),
                                       data_only=True,
                                       read_only=True)
        sheets = input.sheetnames
        sheet = input[sheets[1]]  # select second sheet

        # ==========================
        # name
        # ==========================
        name_col_offset = 2
        name_row_offset = 18
        selected_range = copy_range(start_col=2,
                                    start_row=3,
                                    end_col=2 + name_col_offset,
                                    end_row=3 + name_row_offset,
                                    sheet=sheet)
        paste_range(start_col=1,
                    start_row=-50 + 30 * i,
                    end_col=1 + name_col_offset,
                    end_row=-50 + 30 * i + name_row_offset,
                    sheet_receiving=output_sheet,
                    copied_data=selected_range)

        # ==========================
        #  data
        # ==========================

        data_col_offset = 13
        data_row_offset = 20

        # handle month >=5 excel
        if i >= 5:
            start_col = 8
        else:
            start_col = 7
        selected_range = copy_range(start_col=start_col,
                                    start_row=3,
                                    end_col=start_col + data_col_offset,
                                    end_row=3 + data_row_offset,
                                    sheet=sheet)
        paste_range(start_col=4,
                    start_row=-50 + 30 * i,
                    end_col=4 + data_col_offset,
                    end_row=-50 + 30 * i + data_row_offset,
                    sheet_receiving=output_sheet,
                    copied_data=selected_range)

        output.save("result.xlsx")
        print str(i) + " is done"


if __name__ == '__main__':
    myfile = "result.xlsx"
    if os.path.isfile(myfile):
        os.remove(myfile)

    main()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末文狱,一起剝皮案震驚了整個濱河市辅肾,隨后出現(xiàn)的幾起案子以蕴,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件薛闪,死亡現(xiàn)場離奇詭異雅任,居然都是意外死亡,警方通過查閱死者的電腦和手機抵屿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捅位,“玉大人轧葛,你說我怎么就攤上這事⊥Р螅” “怎么了尿扯?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長焰雕。 經(jīng)常有香客問我衷笋,道長,這世上最難降的妖魔是什么矩屁? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任辟宗,我火速辦了婚禮,結(jié)果婚禮上吝秕,老公的妹妹穿的比我還像新娘泊脐。我一直安慰自己,他們只是感情好郭膛,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布晨抡。 她就那樣靜靜地躺著,像睡著了一般则剃。 火紅的嫁衣襯著肌膚如雪耘柱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天棍现,我揣著相機與錄音调煎,去河邊找鬼。 笑死己肮,一個胖子當(dāng)著我的面吹牛士袄,可吹牛的內(nèi)容都是我干的悲关。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼娄柳,長吁一口氣:“原來是場噩夢啊……” “哼寓辱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赤拒,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤秫筏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挎挖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體这敬,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年蕉朵,在試婚紗的時候發(fā)現(xiàn)自己被綠了崔涂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡始衅,死狀恐怖冷蚂,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汛闸,我是刑警寧澤帝雇,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站蛉拙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏彻亲。R本人自食惡果不足惜孕锄,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苞尝。 院中可真熱鬧畸肆,春花似錦、人聲如沸宙址。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抡砂。三九已至大咱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間注益,已是汗流浹背碴巾。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留丑搔,地道東北人厦瓢。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓提揍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親煮仇。 傳聞我的和親對象是個殘疾皇子劳跃,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345