python-3.x - python:将excel转换为csv
问题描述
我有几行代码应该将我当前工作目录中的大量 excel 电子表格转换为csv
文件。
不幸的是,在运行此代码后,我在第 21 行出现错误。什么可能导致此错误?提前致谢。
python
import os
import csv
import openpyxl
for spreadsheet in os.listdir('.'):
if spreadsheet.endswith('.xlsx'):
wb = openpyxl.load_workbook(spreadsheet)
for sheet_name in wb.get_sheet_names():
sheet = wb.get_sheet_by_name(sheet_name)
csv_file = open(sheet_name + '.csv', 'w', newline='')
csv_writer = csv.writer(csv_file)
for row_num in range(1, sheet.max_row + 1):
row_data = []
for col_num in range(1, sheet.max_column + 1):
row_data.append(sheet.cell(row=row_num, column=col_num).value)
for row in row_data:
csv_writer.writerow(row)
csv_file.close()
我希望有转换的csv
文件。下面是我得到的。
C:\Users\User\Anaconda3\lib\site-packages\ipykernel_launcher.py:10:DeprecationWarning:调用已弃用的函数 get_sheet_names(使用 wb.sheetnames)。
在我们加载东西时删除CWD
from 。sys.path
C:\Users\User\Anaconda3\lib\site-packages\ipykernel_launcher.py:11: DeprecationWarning: Call to deprecated function get_sheet_by_name (使用 wb[sheetname])。
这是由InteractiveShellApp.init_path()
Error Traceback (most recent call last) <ipython-input-29-1b50f926f2e2> in <module>()
19
20 for row in row_data:
---> 21 csv_writer.writerow(row)
22 csv_file.close()
Error: iterable expected, not int
解决方案
考虑用以下内容替换你的最后几行:
for row_num in range(1, sheet.max_row + 1):
row_data = []
for col_num in range(1, sheet.max_column + 1):
row_data.append(sheet.cell(row=row_num, column=col_num).value)
csv_writer.writerow(row_data)
csv_file.close()
当你这样做时for row in row_data:
,你实际上是在迭代单个值(它们是整数)
推荐阅读
- vue.js - vuejs 在 URL 中总是添加 #
- javascript - 如何在页面加载中初始化 ReactWOW
- javascript - 在使用 i18n.use(LanguageDetector).init() 之前等待来自 api 的每次语言更改的资源数据
- c# - 使用特定日期填充 jQuery Datepicker
- azure - Azure Blob 复制和删除
- excel - Excel 用户表单不断重置控制提示文本
- php - 将对象作为方法参数传递可以称为“依赖注入”吗?
- python - 输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。sklearn 蟒蛇
- tableau-api - 在 Tableau 中切换
- c - 如何将数组声明为参数不需要第一维的界限?