使用openpyxl操作Excel

from openpyxl import Workbook
from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment, numbers
from openpyxl.utils.cell import coordinate_to_tuple
from openpyxl.utils import get_column_letter
import numpy as np

def tuple_to_coordinate(row, column):
    col_letter = get_column_letter(column)
    return '{}{}'.format(col_letter, row)

def set_range_style(ws, cell_range, border=Border(), fill=None, font=None, alignment=None, number_format=None, merged=True):
    """
    Apply styles to a range of cells as if they were a single cell.

    :param ws:  Excel worksheet instance
    :param range: An excel range to style (e.g. A1:F20)
    :param border: An openpyxl Border
    :param fill: An openpyxl PatternFill or GradientFill
    :param font: An openpyxl Font object
    :param alignment: An openpyxl Alignment object
    :param number_format: An openpyxl Number_format object
    :param merged: Whether merge cells

    """

    top = Border(top=border.top)
    left = Border(left=border.left)
    right = Border(right=border.right)
    bottom = Border(bottom=border.bottom)
    # default border
    inline = Side(border_style="thin", color="BFBFBF")
    in_border = Border(right=inline , bottom=inline, left=inline, top=inline)

    if merged:
        ws.merge_cells(cell_range)

    rows = ws[cell_range]

    for row in rows:
        for c in row:
            c.border = in_border
            if fill:
                c.fill = fill
            if font:
                c.font = font
            if alignment:
                c.alignment = alignment
            if number_format:
                c.number_format = number_format

    for c in rows[0]:
        new_border = Border(left=c.border.left, top=top.top, right=c.border.right, bottom=c.border.bottom)
        c.border = new_border
    for c in rows[-1]:
        new_border = Border(left=c.border.left, top=c.border.top, right=c.border.right, bottom=bottom.bottom)
        c.border = new_border
    for row in rows:
        l = row[0]
        r = row[-1]
        new_border = Border(left=left.left, top=l.border.top, right=l.border.right, bottom=l.border.bottom)
        l.border = new_border
        new_border = Border(left=r.border.left, top=r.border.top, right=right.right, bottom=r.border.bottom)
        r.border = new_border


def set_header(ws, cell_range, name=None, merged=False):
    if name:
        first_cell = ws[cell_range.split(":")[0]]
        first_cell.value = name
    thin = Side(border_style="thin", color="000000")
    border = Border(top=thin, left=thin, right=thin, bottom=thin)
    fill = PatternFill("solid", fgColor="BCD6EE")
    al = Alignment(horizontal="center", vertical="center")
    font = Font(name=u'微軟雅黑', size=11)
    set_range_style(ws, cell_range, border=border, fill=fill, font=font, alignment=al, merged=merged)

def set_title(ws, cell, title):
    ws[cell].font = Font(name=u'微軟雅黑', bold=True, size=11)
    ws[cell].value = title
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末毕谴,一起剝皮案震驚了整個濱河市枉阵,隨后出現的幾起案子赖草,更是在濱河造成了極大的恐慌漏隐,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件食店,死亡現場離奇詭異,居然都是意外死亡赏寇,警方通過查閱死者的電腦和手機吉嫩,發(fā)現死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗅定,“玉大人自娩,你說我怎么就攤上這事∏耍” “怎么了忙迁?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碎乃。 經常有香客問我姊扔,道長,這世上最難降的妖魔是什么梅誓? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任恰梢,我火速辦了婚禮,結果婚禮上梗掰,老公的妹妹穿的比我還像新娘删豺。我一直安慰自己,他們只是感情好愧怜,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布呀页。 她就那樣靜靜地躺著,像睡著了一般拥坛。 火紅的嫁衣襯著肌膚如雪蓬蝶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天猜惋,我揣著相機與錄音丸氛,去河邊找鬼。 笑死著摔,一個胖子當著我的面吹牛缓窜,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼禾锤,長吁一口氣:“原來是場噩夢啊……” “哼私股!你這毒婦竟也來了?” 一聲冷哼從身側響起恩掷,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤倡鲸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后黄娘,有當地人在樹林里發(fā)現了一具尸體峭状,經...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年逼争,在試婚紗的時候發(fā)現自己被綠了优床。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡誓焦,死狀恐怖羔巢,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情罩阵,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布启摄,位于F島的核電站稿壁,受9級特大地震影響,放射性物質發(fā)生泄漏歉备。R本人自食惡果不足惜傅是,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蕾羊。 院中可真熱鬧喧笔,春花似錦、人聲如沸龟再。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽利凑。三九已至浆劲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哀澈,已是汗流浹背牌借。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留割按,地道東北人膨报。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親现柠。 傳聞我的和親對象是個殘疾皇子院领,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內容