【问题标题】:How to automate new query from CSV and save to XLSX如何从 CSV 自动执行新查询并保存到 XLSX
【发布时间】:2021-02-20 13:11:42
【问题描述】:

我从数据分析和 Python 开始,我目前的工作是导入带有推文的大型 CSV 文件并将它们保存为 xlsx,格式为:Unicode UTF-8。我一直在用经典的方式一个一个地做,但我有数百个,而且还会有更多,所以我需要自动化它。 为了不丢失数据,我需要做的过程如下。

我曾尝试用 python 来做,但到目前为止只能逐个文件夹(从一个文件一个文件改进)但代码丢失了一些数据,我认为这是因为它只作为 csv 文件打开并保存它是 xlsx(我不太清楚,因为代码是互联网上其他人的集合,抱歉)。

    import os
currentDirectory = os.getcwd()
os.chdir (currentDirectory)
import os
import glob
import csv
import openpyxl # from https://pythonhosted.org/openpyxl/ or PyPI (e.g. via pip)

for csvfile in glob.glob(os.path.join('.', '*.csv')):
    wb = openpyxl.Workbook()
    ws = wb.active
    with open(csvfile, 'rt', encoding='UTF-8') as f:
        reader = csv.reader(f)
        for r, row in enumerate(reader, start=1):
            for c, val in enumerate(row, start=1):
                ws.cell(row=r, column=c).value = val
    wb.save(csvfile.replace ('.csv', '.xlsx')) #.csv' + '.xlsx')
    

我正在尝试改进它添加新的东西,但如果有人知道如何在 Python 或 VBA 或其他语言中执行确切的过程,如果你能分享,我将不胜感激。

编辑:回答评论并在运行一些文件比较之后似乎唯一的区别是格式,但它似乎并不是数据本身的丢失。但是我的客户要求我让它自动但保持第一个的格式。第一个是我想要的格式,第二个是自动生成的文件:

谢谢

【问题讨论】:

  • 您能否详细说明“代码丢失了一些数据”? CSV 中的这些行或列是否没有被传输到 Excel 文件,或者是某些 CSV 文件没有被处理?
  • 原来不是数据丢失,是格式变了所以我修改了问题。

标签: python excel csv xlsx


【解决方案1】:

我不会直接使用openpyxl,而是使用pandas,它在内部使用openpyxl 来做详细的工作。与标准库 pathlib 一起,这个简短的脚本将执行相同的操作:

from pathlib import Path
import pandas as pd

p = Path('.')
for csvfile in list(p.glob('**/*.csv')):
    df = pd.read_csv(csvfile)
    excelfile = csvfile.with_suffix('.xlsx')
    df.to_excel(excelfile)
    print(csvfile.parent, csvfile.name, excelfile.name)

【讨论】:

  • 您好,我使用了您的代码,但开始出现 URL 错误,如下所示:因为它超出了 Excel 对每个工作表 65,530 个 URL 的限制。忽略 url xxxxx 警告(“忽略 URL '%s',因为它超出了 Excel 的限制”
  • 似乎在 Excel 中收集这些可能不是一个很好的前进方式。也许本地数据库会更好。但这取决于您需要如何处理收集到的数据。
猜你喜欢
  • 2012-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多