用python如何实现:打开带有密码excel文件,修改后不改变原excel的文件格式(包括颜色,单元格公式,单元格的值等)并保存
不知道你这个问题是否已经解决, 如果还没有解决的话:使用的模块:xlrd
直接看程序:
# -*-coding:utf-8 -*-
import xlrd
import xlwt
import xlutils.copy
def read_excel():
workbook = xlrd.open_workbook(
r'E:\test.xls')
//获取excel文件中表的名字
print(workbook.sheet_names())
//获取excel表中的第一张表,通过index来获取,index从0开始编号
sheet2 = workbook.sheet_by_index(0)
//获取excel表中的第一行,行数从0开始编号。
rows = sheet2.row_values(0)
//获取excel表中的第一列,列数从0开始编号
cols = sheet2.col_values(0)
//for in 迭代打印第一行
/* for row in rows:
print(row)*/
//直接打印第一列
print(cols)
if __name__ == '__main__':
read_excel()
注意:这里我遇到了第一个错误:输出结果是:Process finished with exit code 0
这个意思是程序执行完成了。
然后就没有任何输出了。这是怎么回事呢,原来是我创建项目时配置出了问题。我使用的是pycharm ,刚刚使用的是pycharm提供的虚拟解释器。又因为test.xls文件不是在虚拟环境中的所以就没有输出。
如果点上面红色的地方就是使用的虚拟环境,第一次使用没有设置为下面的自己下载的解释器的话,就会默认为虚拟环境,需要将环境切换到自己下载的解释器。
然后就可以正常输出了:输出了第一行的内容
可以看到输出的棋种中有很多的 ‘’,这是因为test.xls 中的表格格式造成的。而我们只需要将棋种名称提取出来,然后写到另一个表格中,因此就需要把这个列表里面的’'给去除。去除方法如下:
直接看代码
def remove_(the_list):
while '' in the_list:
the_list.remove('')
有其他方法,但是去除效果不好,总会留几个’'在列表中。这里我们需要的第一列,就只打印了第一列
def read_excel():
workbook = xlrd.open_workbook(
r'E:\test.xls')
print(workbook.sheet_names())
sheet2 = workbook.sheet_by_index(0)
cols = sheet2.col_values(0)
remove_(cols)
print(cols)
if __name__ == '__main__':
read_excel()