用库xlwings来读、写表格里的单元格主要用到一个函数:"range";当然这个“range”不是Python的内置整数序列生成函数,而是xlwings库里的对单元格操作的函数。这也是Python的书写经常是“类名库名.函数”这样的形式,很多时候就是避免出现这种同名函数的情况而产生错误。
worksheet.range('A1').expand('right').value
#书写的原则和层次:被读写的工作表.函数名(选中要读写的单元格).各种读写的方法
#“worksheet”是指要打开操作的“工作表”的名称;
#“A1”是指定位于“单元格A1"准备从这开始进行下一步操作,当然“A1”单元格也可以是表格的区域如“A1:D6”这时就是把这区域中的单元格从左到右从上到下读取;如果只有这两项只是代表选中单元格,相当于把光标定位于这个单元格而不进行操作。
#".expand(‘right’)"是指明对工作表读写的方式,
它有三种读写方式,它们的参数分别是:table、down、right。
【table】方式对整个工作表进行读写,它是从指定的单元格开始从上到下,从左到右进行读写。
【down】方式是从指定单元格位置向下读完余下这一整列数据。
【right】方式是从指定单元格位置向右读完余下这一整行数据。
如果没有这个方法(参数)就只是读取前面指的单元格;若前面指定的是区域再用这三种方式读取会出错。
#“.value”或“.value= ”读与写都是由这个参数完成。只是“.value”就是按前面的方法读取工作表;而“.value= ”是指把等号后面的内容写进前面指定的单元格。等号后面所要写进表格的内容可以是字符(串),数值(整、浮),列表等。
举例说明:
(1)单元格读取:Var_1=worksheet.range('A1').value
#把名为“worksheet”工作表中的“A1”单元格(只是一个单元格)内容读取出来并赋给变量“Var_1”
(2)区域读取:Var_2=worksheet.range('A1:D6').value
#把“A1:D6”这区域的单元格内容从左到右从上到下读取出来,并赋给变量“Var_2”;这时候的变量“Var_2”是一个列表形式。
(3)按行读取:Var_3=worksheet.range('A1').expand('right').value
#把名为“worksheet”工作表的“A1”单元格向右读完余下这一整行数据。读取出来并赋给变量“Var_2”;这时候“Var_2”就是一个名为"Var_2"的列表,列表中的第1个元素是“A1”,第2个元素是“B1”,如此类推;原工作表中没有什么内容的单元格不会被读成空或0而进入列表中。
(4)写入单元格:worksheet.range('A1').value=’ABC‘
#向名为“worksheet”工作表中的“A1”单元格(只是一个单元格)写进字符串“ABC”
(5)用列表形写入单元格:worksheet.range('A1').value=['1','2','C‘]
也可这样:list_1=['1','2','C‘]
worksheet.range('A1').value=list_1
结果一样,效果一样,按需采用。
#向名为“worksheet”工作表中的以“A1”单元格分别向A1单元格写进“1”,B1单元格写进“2”,C1单元格写进“C”,即把列表中的内容从指定单元格开始向右把列表中一个元素对应写进一个单元格。把列表元素按行进行写进这是默认的形式,如果想把列表元素按列进行写进要加参数【.options(transpose=True)】。
(6)区域批量写入同一个数据:worksheet.range('A1:D6').value=‘str’
#把“A1:D6”这区域的单元格内全部写入同一个数据“str”
(7)worksheet.range('A1').options(transpose=True).value=['1','2','C‘]
#向名为“worksheet”工作表中的以“A1”单元格分别向A1单元格写进“1”,A2单元格写进“2”,A3单元格写进“C”,即把列表中的内容从指定单元格按列把列表中一个元素对应写进一个单元格。【.options(transpose=True)】这个参数的(transpose)开关默认是False。