python操作Excel的包 | xlrd | xlxt | openpyxl


import xlrd


# 01.打開excel文件,創建一個文件數據對象
data = xlrd.open_workbook('/home/python/Desktop/excel/test1.xls')
# print(data)

# 02.獲取一張表
# table = data.sheets()[0]  # 1.通過索引獲取
# table = data.sheet_by_index(0)  # 2.通過函數獲取索引
table = data.sheet_by_name('Sheet1')  # 3.通過表名獲取
# print(table)

# 03.獲取行或者列的值(數組)
# print(table.row_values(0, start_colx=1, end_colx=3))  # 獲取行,限制列
# row_values()包含3個參數:
#       1.第幾行,從0開始;
#       2.首列:start_colx=0;
#       3.尾列:end_colx=None;(左閉右開)
# >>> [1.0, '大神', '裸男', '狗東西']
# >>> ['大神', '裸男']
# print(table.col_values(0, start_rowx=1, end_rowx=5))  # 獲取列,限制行
# >>> ['大神', '裸男']
# >>> [2.0, 3.0, 4.0, 5.0]

# 04.獲取行數和列數
# print(table.nrows)
# print(table.ncols)
import xlwt


# 1.創建excel文件
test_excel = xlwt.Workbook(encoding="ascii")

# 2.創建表
test_sheet = test_excel.add_sheet('sheet01')

print(dir(test_sheet))

# 3.邊框粗線
borders = xlwt.Borders()  # Create borders

borders.left = xlwt.Borders.MEDIUM
borders.right = xlwt.Borders.MEDIUM
borders.top = xlwt.Borders.MEDIUM
borders.bottom = xlwt.Borders.MEDIUM

# 4.字體加粗
font = xlwt.Font()
font.bold = True

# 5.居中
al = xlwt.Alignment()
al.horz = 0x02  # 設置水平居中
al.vert = 0x01  # 設置垂直居中

style = xlwt.XFStyle()  # Create style
style.borders = borders  # Add borders to style
style.alignment = al
style.font = font

# 6.合並單元格
test_sheet.write_merge(1, 2, 0, 3, 'Second Merge', style)

# 7.往表中內寫入數據
test_sheet.write(0, 0, label="寫一點東西")  # 指定單元格寫入數據

# 8.保存excel文件
test_excel.save('xlwt_demo.xls')
from openpyxl import load_workbook


# 1.讀取文件
# ①引入文件,創建對象
# wb = load_workbook("/home/python/Desktop/excel/test2.xlsx")
# print(wb)
# 打印表名
# print(wb.sheetnames)

# ②獲取指定表
# sheet = wb.get_sheet_by_name("Sheet2")
# print(sheet)

# 獲取指定位置內容對象
# print(sheet["B"])  # 第b列對象
# print(sheet['2'])  # 第2行對象
# print(sheet['B2'].value)  # 顯示指定單元格信息
# print(sheet.max_row)  # 顯示存在數據最大行數
# print(sheet.max_column)  # 顯示存在數據最大列數
# 遍歷
# for i in sheet['B']:
#     print(i.value, end="")  # 原本獲取的數據是帶空格的

# 2.寫入文件
from openpyxl import Workbook


# 創建文件對象
# wb = Workbook()

# # 創建當前工作表的對象
# sheet_obj = wb.active
# print(sheet_obj)
# # 重命名當前工作表
# sheet_obj.title = "Mysheet"

# 添加表 | 添加的表已經被active
# sheet_obj1 = wb.create_sheet('Ursheet')
# print(sheet_obj1)

# 刪除表
#...
# # 往表中寫入數據
# sheet_obj1['B2'] = "hello world"
# for i in range(10):
#     sheet_obj1["A%d" % (i+1)].value = i+1  # 給A列指定行數添加數據

# # 可以將excel中的函數操作,在python中用字符串寫入
# sheet_obj1["C1"].value = "=SUM(A:A)"

# 保存表數據
# wb.save("test4.xlsx")

 

import xlrd
import xlwt
from xlutils.copy import copy


# 打開1.矩陣表20180214起.xlsx中第二張表
data = xlrd.open_workbook('1.矩陣表20180214起.xlsx')

# 獲取 矩陣表到員20180913更新 表
table = data.sheet_by_name('矩陣表到員20180913更新')

# 遍歷所有行,將W,H列構建字典
groups = table.col_values(7, start_rowx=7, end_rowx=724)
tels = table.col_values(55, start_rowx=7, end_rowx=724)
keys = table.col_values(22, start_rowx=7, end_rowx=724)

total_dict = {}

for i in range(len(keys)):
    if keys[i] and keys[i] != "/":
        total_dict[keys[i]] = {
            "group": groups[i],
            "tel": tels[i],
        }

# 讀取
data02 = xlrd.open_workbook('員工工號20181011.xlsx')

table02 = data02.sheets()[0]
# 讀取人名
name_list = table02.col_values(9, start_rowx=2, end_rowx=473)
temp_list = []
for name in name_list:
    try:
        name = total_dict[name]
    except:
        name = ""
    temp_list.append(name)
# 寫入
new_excel = copy(data02)

sheet01 = new_excel.get_sheet(0)  # 14
j = 0
for i in range(2, 474):  # 3-474
    try:
        group_name = temp_list[j]["group"]
    except:
        group_name = ""
    try:
        tel = temp_list[j]["tel"]
    except:
        tel = ""
    sheet01.write(i, 14, group_name)
    sheet01.write(i, 15, tel)
    j += 1

new_excel.save("new_fileName.xls")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM