import time
time.sleep(10) #延时10秒
同时适用于字符串和代码
示例1
a = b + c + d + \
e + f + g + h
示例2.a
print('a b c d e f' \
'g h i j k')
运行结果:
a b c d e fg h i j k
示例2.b
print('a b c d e f \
g h i j k')
运行结果:
a b c d e f g h i j k
(注意 f 和 g 之间有无空格的区别)
仅适用于字符串
print(''' a b c d e
f g h i j''')
运行结果:
a b c d e
f g h i j
注意:使用时须小心行尾的反斜杠会导致打印结果换行失败
print ('''a b c d e \
f g h i j''')
运行结果
a b c d e f g h i j
Note:
1、在字符串前加 r 也可以令换行符、缩进符等失效
print (r"a\ta\na")
运行结果:
a\ta\na
print ("a\ta\n")
运行结果:
a a
a
运行xlwings打开excel文件时,如果该文件已经打开则会报错
方法一、通过临时文件判断Excel文档的占用情况。
(以下方法仅限于本地文件,对Onedrive等网络位置上的文档无效。)
import os
import xlwings as xw
FilePath = 'C:\\Documents\\'
FileName = 'XXXX.xlsx'
def excel_is_open(file_path,file_name):
temp_file = file_path + '~$' + file_name
if os.path.exists(temp_file) : return True
else : return False
if not excel_is_open(FilePath,FileName):
xw.books.open(FilePath+FileName)
方法二、通过捕获异常以避免程序停止运行
from pythoncom import com_error
import xlwings as xw
FilePath = 'C:\\Documents\\'
FileName = 'XXXX.xlsx'
com_error_msg_01 = "Verify that the file has not been corrupted and that the file extension matches the format of the file"
com_error_msg_02 = r"The file name or path does not exist.\n• The file is being used by another program"
def open_excel(file_path,file_name):
try:
Excel.books.open(file_path + file_name)
except com_error as error:
if( com_error_msg_01 or com_error_msg_02 in str(error)):
print(file_name+'已打开!')
else:print("未知错误")
open_excel(FilePath , FileName)
1.4.1.a 只定义循环终止位置:从0开始,(终止位置-1)处停止运行
for i in range(2):
print(i)
运行结果
0
1
1.4.1.b 定义循环开始和终止位置:从开始位置开始,(终止位置-1)处停止运行
for i in range(1,3):
print(i)
运行结果
1
2
1.4.1.c 定义循环开始、终止位置及步长:从开始位置开始,间隔步长,(终止位置-1)处停止运行
for i in range(1,5,2):
print(i)
运行结果
1
3
Note: range(开始位置,终止位置,步长)
条件满足,运行一次后再判断条件是否满足,不满足则结束循环,否则继续运行。
i=0
while i <= 3:
print('i = ' + str(i))
i+=1
运行结果
i = 0
i = 1
i = 2
i = 3
注:xw, Excel 均为自定义名称,可以按喜好更改
# 导入xlwings模块,打开Excel程序,默认设置:程序可见,只打开不新建工作薄,屏幕更新关闭
import xlwings as xw
# 以下用于更改默认设置
# xw.App(visible=True,add_book=False)定义excel程序打开时是否可见,是否在打开后新建一个workbook
Excel=xw.App(visible=True,add_book=False)
# 是否开启提示,如保存提示等。
Excel.display_alerts=False
# 是否更新显示变动内容,若设为False则看不到文档的打开或变化
Excel.screen_updating=True
# 打开Excel及指定路径下的工作簿
filepath=r'd:/test1.xlsx'
wb=Excel.books.open(filepath)
# 保存工作簿
wb.save()
# 新建并打开Excel文档
wb=app.books.add()
# 工作簿另存为
save2filepath=r'd:/test2.xlsx'
wb.save(save2filepath)
# 关闭工作簿
wb.close()
# 关闭所有Excel程序
Excel.quit()
#引用已打开的工作簿
book1=xw.books['test1.xlsx']
book2=xw.books[1] #按打开顺序从0开始索引,此处为引用打开的第二个工作簿
# 引用sheet
sheet1=book1.sheets['sheet1']
sheet2=book2.sheets[0]#按从左向右排列顺序从0开始索引,此处为引用工作簿最左侧的sheet
# 引用单元格
Cell1=sheet1.range('A1')
Cell2=sheet2.cells(1,1)#单元格行/列均从1开始索引,此处为一行一列即单元格”A1“
# 读、写单元格值
sheet1.range('A2').value=Cell2.value
sheet2.cells(1,2).value=Cell1.value
# 读、写同行多个单元格值
sheet1.range('A3').value=sheet2.range('A2:B2').value
# 读、写同列多个单元格值
sheet2.cells(1,3).options(transpose=True).value=sheet1.range((2,1),(2,2)).value
# 读、写二维表多个单元格值
sheet1['C1'].options(expand='table').value = sheet2['A1:C2'].value
sheet2[2,0].options(expand='table').value = \ #指第三行第一列即A3
sheet1[:3,:2].value #指从第一行第一列到第三行第二列范围内的单元格即A1~C2
Note
若定义
import xlwings as xw
book=xw.books[“XXXX.xlsx”]
sheet=book.sheets[‘Sheet Name’]
++++++++++++++++++++++++++++++++++++++++++++++++++++
那么,以下几种表达方式都可以用于引用单元格“A3”(即第3行第1列)
- sheet.range( ‘A3’ )
- sheet.cells(3,1)
- sheet[2,0]
- sheet[ ‘A3’ ]
此外,可以用以下几种方式引用以A2(第2行第1列)和C6(第6行第3列)两个单元格为对角的矩形区域内所有单元格
- sheet.range( ‘A2:C6’ )
- sheet.range( (2,1) , (6,3) )
- sheet[1:6,:3]
Note: 冒号前表示范围始(不包括),冒号后为范围末(包括)。冒号前若为行/列首则填0(可省略不写)
import xlwings as xw
book=xw.books["XXXX.xlsx"]
sheet=book.sheets['Sheet Name']
UsedRange = sheet1.used_range
LastRow = UsedRange.last_cell.row
LastCol = UsedRange.last_cell.column
Range = sheet[:LastRow,:LastCol]
Range.api.color = (255,255,255) #背景色RGB
Range.api.Font.Name = "Arial" #设置字体为Arial
Range.api.Font.ColorIndex = 3 #设置字体颜色,颜色表详见图“ColorIndex 颜色索引”
#Range.api.Font.Color = 0x00ff00 #设置字体颜色 十六进制数表示RGB,低2位表红色,中2位表绿色,高2位表蓝色
Range.api.Fonts.Size = 24 # 字号。
Range.api.Fonts.Bold = True # 粗体。
Range.api.HorizontalAlignment = -4108 # 水平位置:-4108 居中 -4131 靠左 -4152 靠右。
Range.api.VerticalAlignment = -4130 # 垂直位置:-4108 居中 -4160 靠上 -4107 靠下 -4130 自动换行对齐。
Range.api.NumberFormat = "0" # 数字格式,详见 NumberFormat-Microsoft 帮助。
了解全部的数字格式代码参考NumberFormat-Microsoft帮助
import xlwings as xw
book=xw.books["XXXX.xlsx"]
sheet=book.sheets['Sheet Name']
Range=sheet[:5,:5]
Range.api.Border(11).LineStyle = -4115 #设置前5行5列的表格内部全部垂直边框为虚线
#详见表‘引用边框 Border’ 及 表‘指定边框的线条样式 Line Style’
for i in range(7,11) #循环设置上下左右表框,使外表框加粗
Range.api.Borders(i).Weight = 4 #边框线粗,1最细,4最粗
引用边框 Border
Border(i) | 名称 |
---|---|
Border(5) | 从区域中每个单元格的左上角到右下角的边框。 |
Border(6) | 从区域中每个单元格的左下角到右上角的边框。 |
Border(7) | 区域左边缘的边框。 |
Border(8) | 区域顶部的边框。 |
Border(9) | 区域底部的边框。 |
Border(10) | 区域右边缘的边框。 |
Border(11) | 区域中所有单元格的垂直边框(区域以外的边框除外)。 |
Border(12) | 区域中所有单元格的水平边框(区域以外的边框除外)。 |
指定边框的线条样式 Line Style
值 | 说明 |
---|---|
1 | 实线。 |
-4115 | 虚线。 |
4 | 点划相间线。 |
5 | 划线后跟两个点。 |
-4118 | 点式线。 |
-4119 | 双线。 |
-4142 | 无线。 |
13 | 倾斜的划线。 |
Xlwings用于批量读、写Excel文档,规范格式。相较于Excel VBA,代码量可以大幅减少,运行速度有所提升。缺点是电脑里必须要有Python Xlwings环境才能运行。 (可以通过导出.exe可执行文件,在未安装Python的电脑上运行。)