日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python表格对齐_Python对Excel表格数据重新排版

發布時間:2024/2/28 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python表格对齐_Python对Excel表格数据重新排版 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

利用Python操作Excel表格,將數據重新排版最終的數據格式

import xlwt

class Cnumber:

cdict = {}

gdict = {}

xdict = {}

def __init__(self):

self.cdict = {1: u'', 2: u'拾', 3: u'佰', 4: u'仟'}

self.xdict = {1: u'元', 2: u'萬', 3: u'億', 4: u'兆'} # 數字標識符

self.gdict = {0: u'零', 1: u'壹', 2: u'貳', 3: u'叁', 4: u'肆', 5: u'伍', 6: u'陸', 7: u'柒', 8: u'捌', 9: u'玖'}

@staticmethod

def csplit(cdata): # 拆分函數,將整數字符串拆分成[億,萬,仟]的list

g = len(cdata) % 4

csdata = []

lx = len(cdata) - 1

if g > 0:

csdata.append(cdata[0:g])

k = g

while k <= lx:

csdata.append(cdata[k:k + 4])

k += 4

return csdata

def cschange(self, cki): # 對[億,萬,仟]的list中每個字符串分組進行大寫化再合并

lenki = len(cki)

lk = lenki

chk = u''

for i in range(lenki):

if int(cki[i]) == 0:

if i < lenki - 1:

if int(cki[i + 1]) != 0:

chk = chk + self.gdict[int(cki[i])]

else:

chk = chk + self.gdict[int(cki[i])] + self.cdict[lk]

lk -= 1

return chk

def cwchange(self, data):

cdata = str(data).split('.')

cki = cdata[0]

ckj = cdata[1]

chk = u''

cski = self.csplit(cki) # 分解字符數組[億,萬,仟]三組List:['0000','0000','0000']

ikl = len(cski) # 獲取拆分后的List長度

# 大寫合并

for i in range(ikl):

if self.cschange(cski[i]) == '': # 有可能一個字符串全是0的情況

chk = chk + self.cschange(cski[i]) # 此時不需要將數字標識符引入

else:

chk = chk + self.cschange(cski[i]) + self.xdict[ikl - i] # 合并:前字符串大寫+當前字符串大寫+標識符

# 處理小數部分

lenkj = len(ckj)

if lenkj == 1: # 若小數只有1位

if int(ckj[0]) == 0:

chk = chk + u'整'

else:

chk = chk + self.gdict[int(ckj[0])] + u'角整'

else: # 若小數有兩位的四種情況

if int(ckj[0]) == 0 and int(ckj[1]) != 0:

chk = chk + u'零' + self.gdict[int(ckj[1])] + u'分'

elif int(ckj[0]) == 0 and int(ckj[1]) == 0:

chk = chk + u'整'

elif int(ckj[0]) != 0 and int(ckj[1]) != 0:

chk = chk + self.gdict[int(ckj[0])] + u'角' + self.gdict[int(ckj[1])] + u'分'

else:

chk = chk + self.gdict[int(ckj[0])] + u'角整'

return chk

class write_excel:

def __init__(self, file_name):

self.file_name = file_name

self.workbook = xlwt.Workbook()

self.worksheet = self.workbook.add_sheet("打印")

def set_width_height(self, col ):

row = 0

#設置行高

tall_style1 = xlwt.easyxf('font:height 618')

self.worksheet.row(row).set_style(tall_style1)

self.worksheet.row(row+17).set_style(tall_style1)

tall_style2 = xlwt.easyxf('font:height 404')

for i in range(row+1, row+10):

self.worksheet.row(i).set_style(tall_style2)

for i in range(row+18, row+27):

self.worksheet.row(i).set_style(tall_style2)

#設置列寬

width_list = [4403, 1322, 3726, 1457, 5009, 9113]

for i in range(6):

self.worksheet.col(col+i).width = width_list[i]

def set_style(self, borders = xlwt.Borders(), font_bold = False,font_height = 20*12, horz = 0x01, vert = 0x01):

#設置字體

font = xlwt.Font()

font.bold = font_bold

font.height = font_height

#設置單元格對齊方式

alignment = xlwt.Alignment()

alignment.horz = horz

alignment.vert = vert

'''

borders = xlwt.Borders()

borders.top = 1

borders.bottom = 1

borders.left = 1

borders.right = 1

'''

style = xlwt.XFStyle()

style.font = font

style.alignment = alignment

style.borders = borders

return style

def get_upper_Roman(self, number):

pt = Cnumber()

number_str = str(number)

if number_str == '0':

result = '零'

elif '.' in number_str:

result = pt.cwchange(number_str)

else:

number_str += '.00'

result = pt.cwchange(number_str)

return result

def add_data(self, data, row = 0,):

cols = data[0]

name = data[1]

mgroup = data[2]

date_start = data[3]

date_end = data[4]

sale = data[5]

cost = data[6]

rent = data[7]

good = data[8]

remain = data[9]

print(remain)

self.set_width_height(cols)

style1 = self.set_style(font_bold=True,font_height= 20*18, horz=0x02, vert=0x01)

self.worksheet.write_merge(row, row, cols, cols+5, "客戶返款結算單", style1)

self.worksheet.write_merge(row+17, row+17, cols,cols+5, "客戶返款結算單", style1)

#左上角的格式

borders = xlwt.Borders()

borders.top = 5

borders.left = 5

style2 = self.set_style(borders = borders)

self.worksheet.write(row+1, cols, "商戶姓名:", style2)

self.worksheet.write(row+18, cols, '商戶姓名:', style2)

#上邊格式

borders = xlwt.Borders()

borders.top = 5

borders.left = 1

borders.right = 1

style3 = self.set_style(borders = borders)

self.worksheet.write_merge(row+1, row+1, cols+1, cols+3, name, style3)

self.worksheet.write_merge(row+18, row+18, cols+1, cols+3, name, style3)

self.worksheet.write(row+1, cols+4, "區域號", style3)

self.worksheet.write(row+18, cols+4, "區域號", style3)

#右上角格式

borders = xlwt.Borders()

borders.top = 5

borders.right = 5

borders.left = 1

style4 = self.set_style(borders = borders)

self.worksheet.write(row+1, cols+5, mgroup, style4)

self.worksheet.write(row+18, cols+5, mgroup, style4)

#左邊格式

borders = xlwt.Borders()

borders.left = 5

borders.top = 1

borders.bottom = 1

borders.right = 1

style5 = self.set_style(borders = borders)

content = ['結算日期', '銷售金額', '扣費金額', '扣租金額', '扣除貨款']

for i in range(len(content)):

self.worksheet.write(row+2+i, cols, content[i], style5)

self.worksheet.write(row+19+i, cols, content[i], style5)

#內部格式

borders = xlwt.Borders()

borders.top = 1

borders.bottom = 1

borders.left = 1

borders.right = 1

style6 = self.set_style(borders = borders)

self.worksheet.write_merge(row+2, row+2, cols+1, cols+3, date_start, style6)

self.worksheet.write_merge(row+19, row+19, cols+1, cols+3, date_start, style6)

self.worksheet.write(row+2, cols+4, "至", style6)

self.worksheet.write(row+19, cols+4, "至", style6)

content2 = [sale, cost, rent, good]

for i in range(4):

self.worksheet.write(row+3+i, cols+1, "小寫", style6)

self.worksheet.write(row+3+i, cols+2, str(content2[i]), style6)

self.worksheet.write(row+3+i, cols+3, "元", style6)

self.worksheet.write(row+3+i, cols+4, "大寫", style6)

self.worksheet.write(row + 20 + i, cols + 1, "小寫", style6)

self.worksheet.write(row + 20 + i, cols + 2, str(content2[i]), style6)

self.worksheet.write(row + 20 + i, cols + 3, "元", style6)

self.worksheet.write(row + 20 + i, cols + 4, "大寫", style6)

#右邊格式

borders = xlwt.Borders()

borders.top = 1

borders.bottom = 1

borders.left = 1

borders.right = 5

style7 = self.set_style(borders = borders)

content3 = [date_end, sale, cost, rent, good]

for i in range(len(content3)):

if i == 0:

self.worksheet.write(row+2+i, cols+5, content3[i], style7)

self.worksheet.write(row+19+i, cols+5, content3[i], style7)

else:

self.worksheet.write(row+2+i, cols+5, self.get_upper_Roman(content3[i]), style7)

self.worksheet.write(row+19+i, cols+5, self.get_upper_Roman(content3[i]),style7)

#左下角

borders = xlwt.Borders()

borders.top = 1

borders.left = 5

borders.right = 1

borders.bottom = 5

style8 = self.set_style(borders = borders)

self.worksheet.write(row+7, cols, "剩余返款", style8)

self.worksheet.write(row+24, cols, "剩余返款", style8)

#下邊

borders = xlwt.Borders()

borders.top = 1

borders.bottom = 5

borders.left = 1

borders.right = 1

style9 = self.set_style(borders = borders)

content4 = ['小寫', remain, '元', '大寫']

for i in range(len(content4)):

self.worksheet.write(row+7, cols+1+i, str(content4[i]), style9)

self.worksheet.write(row+24, cols+1+i, str(content4[i]), style9)

#右下角

borders = xlwt.Borders()

borders.top = 1

borders.bottom = 5

borders.left = 1

borders.right = 5

style10 = self.set_style(borders = borders)

self.worksheet.write(row+7, cols+5, self.get_upper_Roman(remain), style10)

self.worksheet.write(row+24, cols+5, self.get_upper_Roman(remain), style10)

#方框外部

style11 = self.set_style()

self.worksheet.write(row+9, cols, "核算人員簽字", style11)

self.worksheet.write(row+26,cols, "核算人員簽字", style11)

self.worksheet.write(row+9, cols+4, "經理簽字", style11)

self.worksheet.write(row+26, cols+4, "經理簽字", style11)

def save(self):

self.workbook.save(self.file_name)

if __name__ == "__main__":

data = [

[0, "XXX", '2XXX', '2020.03.26', '2020.04.25', 20000, 200, 100, 100, 19600],

[6, 'XXX', '2XXX', '2020.03.26', '2020.04.25', 20000, 200, 100, 100,19600],

[12, 'XXX', '2XX', '2020.03.26', '2020.04.25', 50000, 200, 100, 100, 49600],

[18, 'XXX', 'XXX', '2020.03.26', '2020.04.25', 890000, 0, 100, 100, 49600],

]

file_name = "changshi.xls"

p = write_excel(file_name)

for n in range(len(data)):

print(data[n])

p.add_data(data[n])

p.save()

總結

以上是生活随笔為你收集整理的python表格对齐_Python对Excel表格数据重新排版的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。