通过python,将excel中的数据写入二维列表
Posted silgen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过python,将excel中的数据写入二维列表相关的知识,希望对你有一定的参考价值。
需求:读取Excel表中数据,每行数据放在一个列表中,再把所有列表都存入到一个列表中,形成二维列表。
实现方法:导入可在Python处理Excel表格数据的模块。
excel表:
方法一:xlwings
了解到xlwings很强大,但是折戟沉沙(本地环境问题)。
1. 写一个测试demo如下:
import xlwings as xw # 打开excel,参数visible表示处理过程是否可视,add_book表示是否打开新的Excel程序 with xw.App(visible=True, add_book=False) as app: # 创建一个工作薄 book = app.books.add() # 工作薄中创建一个sheet表 sht = book.sheets.add() # 向表格的A1单元格写入“Hello Python” sht.range(\'A1\').value = \'Hello Python\' # 保存 book.save(\'./test.xlsx\')
2. 代码执行结果:
"D:\\Program Files\\python3\\python.exe" "D:\\Program Files\\python3\\Zyl\\demo71.py" Traceback (most recent call last): File "D:\\Program Files\\python3\\Zyl\\demo71.py", line 4, in <module> with xw.App(visible=True, add_book=False) as app: File "D:\\Program Files\\python3\\lib\\site-packages\\xlwings\\main.py", line 294, in __init__ self.impl = engines.active.apps.add( File "D:\\Program Files\\python3\\lib\\site-packages\\xlwings\\main.py", line 203, in add return App(impl=self.impl.add(**kwargs)) File "D:\\Program Files\\python3\\lib\\site-packages\\xlwings\\_xlwindows.py", line 497, in add return App(spec=spec, add_book=add_book, xl=xl, visible=visible) File "D:\\Program Files\\python3\\lib\\site-packages\\xlwings\\_xlwindows.py", line 521, in __init__ self._xl = COMRetryObjectWrapper(DispatchEx("Excel.Application")) File "D:\\Program Files\\python3\\lib\\site-packages\\win32com\\client\\__init__.py", line 145, in DispatchEx dispatch = pythoncom.CoCreateInstanceEx( pywintypes.com_error: (-2147024894, \'系统找不到指定的文件。\', None, None) Process finished with exit code 1
百度搜索该问题,很多回答都是说安装了WPS导致的该问题,我的电脑并未安装WPS,无法用网上搜索到的解决方案解决。还有的说要根据报错修改源码,比较麻烦,放弃。
方法二:xlrd
该方法可将excel数据转化为二维列表,但是列表的中的数据格式发生变异。
1. 代码实现如下:
import xlrd # coding=utf-8 #读取文件 def read_excel(files, sheet, row): try: workbook = xlrd.open_workbook(files) table = workbook.sheet_by_name(sheet) nrows = table.nrows # 表的行数 value_list = [] for i in range(row, nrows): rowvalue = table.row_values(i)[0:5] value_list.append(rowvalue) print(value_list) return value_list except: print(\'文件读取失败!\') # 调用函数 read_excel(r\'D:\\Program Files\\python3\\Zyl\\sgs2.xls\',\'压测结果\',2)
2. 代码执行结果:
时间、数字的格式不对,再转化比较麻烦,该方法舍弃。
方法三:openpyxl
这也是一款强大的工具,满足当前需求,采用。
1. 代码实现如下:
import openpyxl #读取文件 def read_excel(files, sheet): try: my_list = [] # 按行存放Excel表中数据 wb = openpyxl.load_workbook(files) ws = wb[sheet] maxrows = ws.max_row # 获取最大行 for i in range(maxrows-2): temp_list = [] for each in ws.iter_cols( max_col=5,min_row=3): temp_list.append(each[i].value) my_list.append(temp_list) print(my_list) print(ws) return my_list except: print(\'文件读取失败!\') # 调用函数 read_excel(r\'result.xlsx\',\'压测结果\')
2. 代码执行结果:
excel表中的数据写入到列表中后,格式没有发生变化。 nice!!!
本文来自博客园,作者:查拉图斯特拉面条,转载请注明原文链接:https://www.cnblogs.com/silgen/p/17103280.html
以上是关于通过python,将excel中的数据写入二维列表的主要内容,如果未能解决你的问题,请参考以下文章
Python如何将一个列表写入到一个excel表中的一列,求Python代码,谢啦!
Python使用Openpyxl库将多行多列数据复制到新Excel表示例
如何将python数组(data = [])写入excel?
jQuery写省级联动列表,创造二维数组,以及如何存/调用二维数组中的数据