Python Xlsxwriter 简明教程

Python XlsxWriter - Cell Notation & Ranges

工作簿中的每个工作表都是一个数字巨大的单元格网格,每个单元格可以存储一个数据 - 值或公式。网格中的每个单元格由其行号和列号标识。

在 Excel 的标准单元格寻址中,列用字母标识,A、B、C、…​、Z、AA、AB 等等,而行从 1 开始编号。

每个单元格的地址都是字母数字的,其中字母部分对应于列,数字部分对应于行。例如,地址“C5”指向列“C”和行号“5”中的单元格。

cell notations1

Cell Notations

标准 Excel 使用字母列和基于 1 的行的字母数字序列。XlsxWriter 支持标准 Excel 表示法 ( A1 表示法) 以及 Row-column 表示法,该表示法对行和列都使用基于零的索引。

Example

在以下示例中,使用 Excel 的标准单元格地址将字符串“Hello world”写入 A1 单元格,而使用行-列表示法将“Welcome to XLSXWriter”写入单元格 C5。

import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
ws = wb.add_worksheet()
ws.write('A1', 'Hello world')           # A1 notation
ws.write(4,2,"Welcome to XLSXWriter")   # Row-column notation
wb.close()

Output

使用 Excel 软件打开 hello.xlsx 文件。

cell notations2

编号的 row-column 表示法在以编程方式引用单元格时特别有用。在以下代码中,列表中的数据必须写入工作表中的单元格范围。这是通过两个嵌套循环实现的,外部循环表示行号,内部循环表示列号。

data = [
   ['Name', 'Physics', 'Chemistry', 'Maths', 'Total'],
   ['Ravi', 60, 70, 80],
   ['Kiran', 65, 75, 85],
   ['Karishma', 55, 65, 75],
]
for row in range(len(data)):
   for col in range(len(data[row])):
      ws.write(row, col, data[row][col])

可以通过使用以下代码中使用的工作表对象的 write_row() 方法来实现相同的结果 −

for row in range(len(data)):
   ws.write_row(6+row,0, data[row])

工作表对象具有 add_table() 方法,该方法将数据写入范围,并转换为 Excel 范围,在顶部行中显示自动筛选下拉箭头。

ws.add_table('G6:J9', {'data': data, 'header_row':True})

Example

可以通过以下代码验证以上所有三个代码的输出,并显示在以下图形中 -

import xlsxwriter

wb = xlsxwriter.Workbook('ex1.xlsx')
ws = wb.add_worksheet()

data = [
   ['Name', 'Physics', 'Chemistry', 'Maths', 'Total'],
   ['Ravi', 60, 70, 80],
   ['Kiran', 65, 75, 85],
   ['Karishma', 55, 65, 75],
]
for row in range(len(data)):
   for col in range(len(data[row])):
      ws.write(row, col, data[row][col])

for row in range(len(data)):
   ws.write_row(6+row,0, data[row])

ws.add_table('G6:J9', {'data': data, 'header_row':False})

wb.close()

Output

执行以上程序并使用 Excel 软件打开 ex1.xlsx

cell notations3