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
使用openpyxl操作Excel
?著作權歸作者所有,轉載或內容合作請聯系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗅定,“玉大人自娩,你說我怎么就攤上這事∏耍” “怎么了忙迁?”我有些...
- 正文 為了忘掉前任恰梢,我火速辦了婚禮,結果婚禮上梗掰,老公的妹妹穿的比我還像新娘删豺。我一直安慰自己,他們只是感情好愧怜,可當我...
- 文/花漫 我一把揭開白布呀页。 她就那樣靜靜地躺著,像睡著了一般拥坛。 火紅的嫁衣襯著肌膚如雪蓬蝶。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼禾锤,長吁一口氣:“原來是場噩夢啊……” “哼私股!你這毒婦竟也來了?” 一聲冷哼從身側響起恩掷,我...
- 正文 年R本政府宣布启摄,位于F島的核電站稿壁,受9級特大地震影響,放射性物質發(fā)生泄漏歉备。R本人自食惡果不足惜傅是,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蕾羊。 院中可真熱鬧喧笔,春花似錦、人聲如沸龟再。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽利凑。三九已至浆劲,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哀澈,已是汗流浹背牌借。 一陣腳步聲響...
推薦閱讀更多精彩內容
- WeihanLi.Npoi Intro Npoi 擴展,適用于.netframework4.5及以上和netsta...
- 前篇我們講完了我們這個工具庫的架構設計篇废恋,那個是我工具設計的思想點谈秫。PoiExportUtil這個接口庫就是基于前...
- 在上一篇[.net core下配置、數據庫訪問等操作實現]主要介紹了讀取配置鱼鼓,數據庫操作的一些方法實例拟烫,本篇主要介...
- 部分摘自官網文檔. 該模塊安裝很簡單 先來個簡單的例子: 運行后 會在當前目錄生成一個Excel_test.xls...
- python3.x版本 先安裝兩個模塊,xlwt用來寫excel迄本,xlrd用來讀excel 直接pip insta...