案例01 精确调整多个工作簿的行高和列宽——销售表
import os # 导入os模块
import xlwings as xw # 导入xlwings模块
file_path='e:\\table\\销售表' # 给出工作簿所在的文件夹路径
file_list = os.listdir(file_path) # 列出文件夹下所有文件和子文件的名称
app = xw.App(visible = False, add_book = False) # 启动Excel程序
for i in file_list: # 遍历文件夹路径下的所有文件名
if i.startswith('~$'): # 判断文件是否有文件名以“~$”开头的文件
continue # 如果有,则跳过这种类型的文件
file_paths = os.path.join(file_path, i) # 将文件夹路径和文件名拼接成工作簿的完整路径
workbook = app.books.open(file_paths) # 打开要调整行高和列宽的工作簿
for j in workbook.sheets: # 遍历当前工作簿中的工作表
value = j.range('A1').expand('table') # 在工作表中选择要调整行高和列宽的单元格区域
value.column_width = 12 # 将列宽调整为可容纳12个字符的宽度
value.row_height = 20 # 将行高调整为20磅
workbook.save() # 保持当前工作簿
workbook.close() # 关闭当前工作簿
app.quit() # 退出Excel程序
知识延伸
- column_width是xlwings模块中用于获取和设置列宽的属性。列宽的单位是字符数,取值范围是0-255。这里的字符指的是英文字符,如果字符的字体是比例字体(每个字符的宽度不同),则以字符0的宽度为准。在用该属性获取列宽时,如果所选单元格区域中各列的列宽不同,则根据所选单元格区域位于包含数据单元区域的内部或外部分别返回None或第一列的列宽。
- row_height是xlwings模块中用于获取和设置行高的属性。行高的单位是磅,取值范围是0-409.5。在用该属性获取行高时,如果所选单元格区域中各列的行高不同,则根据所选单元格区域位于包含数据单元格区域的内部或外部分别返回None或第一行的行高。
精确调整一个工作簿中所有工作表的行高与列宽 ——采购表.xlsx
import xlwings as xw
app = xw.App(visible = False, add_book = False)
workbook = app.books.open('e:\\table\\采购表.xlsx')
for i in workbook.sheets:
value = i.range('A1').expand('table')
value.column_width = 12
value.row_height = 20
workbook.save()
app.quit()
案例02 批量更改多个工作簿的数据格式——采购表(文件夹)
import os
import xlwings as xw
file_path = '采购表' # 给出工作簿所在的文件夹路径
file_list = os.listdir(file_path) # 列出文件夹下所有文件和子文件夹的名称
app = xw.App(visible = False, add_book = False) # 启动Excel程序
for i in file_list: # 遍历文件夹路径下的所有文件名
if i.startswith('~$'): # 判断是否有文件名以“~$”开头的文件
continue # 如果有,则跳过这种类型的文件
file_paths = os.path.join(file_path, i) # 将文件夹路径和文件名拼接成工作簿的完整路径
workbook = app.books.open(file_paths) # 打开要设置的数据格式的工作簿
for j in workbook.sheets: # 遍历当前工作簿中的工作表
row_num = j['A1'].current_region.last_cell.row # 获取工作表中数据区域最后一行的行号
j['A2:A{}'.format(row_num)].number_format = 'm/d' # 将A列的“采购日期”数据全部更改为“月/日”格式
j['D2:D{}'.format(row_num)].number_format = '¥#,##0.00' # 将D列的“采购金额”数据全部更改为带货币符号和两位小数的格式
workbook.save()
workbook.close()
app.quit()
知识延伸
1、format()函数用来拼接代表单元格区域的字符串。
例如:‘A2:A{}'.format(row_num),假设当前工作表中数据区域最后一行的行号row_num为16,则 ‘A2:A{}'.format(row_num)就相当于’A2:A16‘,代表单元格区域A2:A16。
2、拼接出单元格区域后,就可以使用xlwings模块中的number_format属性来设置单元格区域中的数据格式。该属性的取值为一个代表特定格式的字符串,与Excel的“设置单元格格式”对话框中“数字”选项卡下设置的格式对应。
批量更改多个工作簿的外观格式——销售表(文件夹)
import os
import xlwings as xw
file_path = '销售表'
file_list = os.listdir(file_path)
app = xw.App(visible = False, add_book = False)
for i in file_list:
if i.startswith('~$'):
continue
file_paths = os.path.join(file_path, i)
workbook = app.books.open(file_paths)
for j in workbook.sheets:
j['A1:H1'].api.Font.Name = '宋体' # 设置工作表标题行的字体为“宋体”
j['A1:H1'].api.Font.Size = 10 # 设置工作表标题行的字号为“10”磅
j['A1:H1'].api.Font.Bold = True # 加粗工作表标题行
j['A1:H1'].api.Font.Color = xw.utils.rgb_to_int((255