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