原创不易,转载前请注明博主的链接地址:Blessy_Zhu https://blog.csdn.net/weixin_42555080
本次代码的环境:
运行平台: Windows
Python版本: Python3.x
IDE: PyCharm
一、xlwt常用的方法:
先给出一个代码例子:
def write_excel(path):
# 创建工作簿
workbook = xlwt.Workbook(encoding='utf-8')
# 创建sheet
for title,url in getProvinceCode('http://www.ip138.com/post/').items():
data_sheet = workbook.add_sheet(title)
row0 = [u'城市名称', u'邮政编码', u'长途区号'] # 每个表的第一行文字,表头
for i in range(len(row0)):
data_sheet.write(0, i, row0[i])
code_list = getPostCode(url)
for i in range(len(code_list)): # 循环写入所有邮政编码信息
for j in range(len(code_list[i])):
data_sheet.write(i+1,j,code_list[i][j])
workbook.save(path)
方法 | 描述 |
---|---|
work_book = xlwt.Workbook(encoding=‘ascii’) | 新建一个excel对象(必须使用save方法才能生成最后的excel文件),可以设置编码格式,默认是ASCii,这时候代码中操作excel最好都使用Unicode字符串,特别是有中文的情况下,必须使用Unicode,不然会编码报错;也可以UTF-8(或其他,我没试过),这时候除了最后执行save方法保存时文件路径必须使用Unicode字符串外,其他的操作都可以是普通字符串 |
work_book.save(filename) | 将excel对象保存为excel文件,filename可以是相对路径,也可以是绝对路径,但是路径中的目录(文件夹)是必须存在的,而且不能存在同名文件,不然会报错,如果路径中包含中文,注意使用Unicode字符串。 |
work_book.add_sheet(sheetname, cell_overwrite_ok=False) | 在work_book中添加一个指定名称的sheet页,当参数cell_overwrite_ok设为True时,sheet中的单元格即便被多次重写也不会报错。 |
sheet.write(r, c, label=’’, style=Style.default_style) | 在单元格“(r, c)”中写入值“label”,可以指定单元格的格式style。 |
sheet.merge(r1, r2, c1, c2, style=Style.default_style) | 合并单元格。 |
sheet.write_merge(r1, r2, c1, c2, label="", style=Style.default_style) | 合并单元格,并写入值。 |
sheet.row(indx) | 获取行对象,可以通过行对象的值来获取和设置行属性,比如设置行高:sheet.row(0).height=40。 |
sheet.col(indx) | 获取列对象,可以通过列对象的值来获取和设置列属性,比如设置列宽:sheet.col0).width=40 |
sheet.row_height(row) | 获取行高。 |
sheet.col_width(col) | 获取列宽。 |
xlwt.Formula(s) | s为excel中的公式字符串,可以将这个Formula对象作为write等方法的值传入进去。 |
对于xlwt.Formula(s),比如:
- xlwt.Formula(‘HYPERLINK("#%s!%s%s";"%s")’ % (sheet_name, col, row, value)):设置Excel内的超链接
- 这部分整体作为value传入write等写入方法中,其中的第一个双引号为Excel中的公式表示,不能用单引号或三引号
- value为写入单元格的值,sheet_name为链接的目的地址,col(1,2,3…)和row(A,B,C…)表示连接到sheet_name的单元格位置
- xlwt.Formula(‘HYPERLINK(“https://www.baidu.com”;“百度”)’):设置Excel外的链接。
- xlwt.Formula('A1B1’):设置某个单元格的值为“A1B1”的值
- xlwt.Formula(‘SUM(A1, B1)’):设置某个单元格的值为“SUM(A1, B1)”的值
二、xlrd常用的方法:
方法 | 描述 |
---|---|
work_book = xlrd.open_workbook(filename) | 打开指定路径的excel文件,返回excel处理对象,但无法打开不存在的文件。 |
work_book.nsheets | 返回excel中的sheet个数。 |
work_book.sheets() | 加载并返回excel中的所有sheet对象组成的列表。 |
work_book.sheet_by_index(sheetx) | 返回对应索引的sheet对象,索引范围为range(work_book.nsheets)。 |
work_book.sheet_by_name(sheet_name) | 返回对应sheet名称的sheet对象。 |
work_book.sheet_names() | 返回excel中所有sheet名称组成的列表。 |
sheet.book | sheet所属的work_book。 |
sheet. name | sheet的名称。 |
sheet.nrows | sheet中的行数。 |
sheet.ncols | sheet中的列数。 |
sheet.row(rowx) | 返回对应行的cell对象组成的列表。 |
sheet.row_slice(rowx, start_colx=0, end_colx=None) | 返回对应行的cell对象组成的列表,也自定义切片获取行的cell对象列表。 |
sheet.col(colx) | 返回对应列的cell对象组成的列表。 |
sheet.col_slice(colx, start_rowx=0, end_rowx=None) | 返回对应列的cell对象组成的列表,也自定义切片获取行的cell对象列表。 |
sheet.cell(rowx, colx) | 返回对应单元格的cell对象。、 |
sheet.cell_value(rowx, colx) | 返回对应单元格的值。 |
sheet.row_len(rowx) | 返回对应行的有效单元格数。 |
sheet.get_rows() | 返回一个行的迭代器,每次迭代返回一个cell对象组成的列表,即这一行的cell对象列表。 |
sheet.row_values(rowx, start_colx=0, end_colx=None) | 返回对应行的值的列表,也可以自定义切片获取某些值。 |
sheet.col_values(colx, start_rowx=0, end_rowx=None) | 返回对应列的值的列表,也可以自定义切片获取某些值。 |
sheet.cell(rowx, colx).value | 返回对应单元格的值。 |
三、 设置单元格字体:
属性 | 描述 |
---|---|
cell_font = xlwt.Font() | 字体对象 |
cell_font.name = ‘Times New Roman’ | 设置字体 |
cell_font.bold = True | 粗体 |
cell_font.underline = True | 下划线 |
cell_font.italic = True | 斜体 |
cell_style = xlwt.XFStyle() | 格式对象 |
cell_style.font = cell_font 将字体样式赋给格式对象中的字体
sheet.write(1, 0, value, cell_style) 在单元格写入等方法中将格式参数传进去
四、设置单元格边框:
属性/方法 | 描述 |
---|---|
cell_borders = xlwt.Borders() | 边框对象 |
cell_borders.left = xlwt.Borders.DASHED | 设置左边框(常用值:NO_LINE(无边框), THIN(薄), MEDIUM(中), THICK(厚),DASHED(虚线), DOTTED(点虚线))cell_borders.right = xlwt.Borders.DASHED cell_borders.top = xlwt.Borders.DASHED cell_borders.bottom = xlwt.Borders.DASHED |
cell_style = xlwt.XFStyle() | 格式对象 |
cell_style.borders = cell_borders | 将边框样式赋给格式对象 |
sheet.write(0, 0, value, cell_style)
设置单元格背景色代码:
cell_pattern = xlwt.Pattern()
cell_pattern.pattern = xlwt.Pattern.SOLID_PATTERN # SOLID_PATTERN 或 NO_PATTERN
cell_pattern.pattern_fore_colour = 5 # 颜色(不止这些):0 = Black, 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , 20 = Dark Magenta, 21 = Teal, 22 = Light Gray, 23 = Dark Gray
cell_style = xlwt.XFStyle()
cell_style.pattern = cell_pattern
sheet.write(0, 0, value, cell_style)
内容参考:单曲循环