python筛选excel数据保存到新的excel表后日期列乱码
时间: 2023-07-21 13:23:37 浏览: 166
如果你在将数据复制到新的Excel表后,日期列出现了乱码,那么可能是因为日期格式在复制过程中出现了问题。为了解决这个问题,我们可以在复制时将日期格式转换为字符串格式,并在保存时指定日期格式。
以下是修改后的代码:
```python
import openpyxl
from openpyxl.utils import get_column_letter
# 打开原始Excel文件
workbook = openpyxl.load_workbook('data.xlsx')
# 创建新的Excel工作簿
new_workbook = openpyxl.Workbook()
new_sheet = new_workbook.active
new_sheet.title = '领料数量大于1000的条目'
# 遍历每个工作表,并筛选符合条件的行
for sheet_name in workbook.sheetnames:
sheet = workbook[sheet_name]
for row in sheet.iter_rows(min_row=2):
# 检查领料数量是否大于1000
qty = row[3].value
if qty is not None and qty > 1000:
# 将日期格式转换为字符串格式
for cell in row:
if isinstance(cell.value, datetime.datetime):
cell.value = cell.value.strftime('%Y-%m-%d %H:%M:%S')
# 将符合条件的行复制到新的Excel工作表
new_sheet.append([cell.value for cell in row])
# 设置日期格式
for col_idx in range(1, new_sheet.max_column + 1):
col_letter = get_column_letter(col_idx)
for row in new_sheet.iter_rows(min_row=1, max_row=1):
cell = row[col_idx - 1]
if isinstance(cell.value, str) and ':' in cell.value:
cell.number_format = 'yyyy-mm-dd hh:mm:ss'
# 保存新的Excel文件
new_workbook.save('new_data.xlsx')
```
在这个版本的代码中,我们在复制每一行之前,先检查该行中是否包含日期。如果发现有日期,我们就将其格式转换为字符串格式(例如:"2022-05-01 12:30:00")。
在保存新的Excel文件时,我们使用了`cell.number_format`属性来指定日期格式。这样,即使在复制过程中出现了乱码,我们也可以确保在保存时,日期能够正确地显示。
希望这个修改后的代码可以解决你的问题!
阅读全文