【问题标题】:import csv to xlsx python将csv导入xlsx python
【发布时间】:2017-12-15 04:21:00
【问题描述】:

我正在尝试将 csv 文件中的一些数据放入现有的 excel 文件中。 我现有的 excel 文件包含图像并且 xlrd 无法获取图像。 我尝试使用 xlsxwriter,但它不能附加到现有的 xslx。 我发现的唯一解决方案是使用 openpyxl。

import openpyxl
xfile = openpyxl.load_workbook('my_exist_file')
sheet = xfile.get_sheet_by_name('Sheet1')
with open("my_csv", 'rb') as f:
    reader = csv.reader(f)
    for r, row in enumerate(reader):
        for c, col in enumerate(row):
           -here is my problem- 

如何将 csv 数据(即表格)写入现有 xslx 中的特定位置?我希望我的表格从 K2 单元格开始。

谢谢!

【问题讨论】:

  • pandas 有一个出色的read_csv 方法,您可以使用this workaround 将数据添加到 excel 文件中(在您尝试之前,我仍然会保留一些 excel 的备份,因为它可能会删除其他内容在工作表上)
  • 谢谢,我查看了解决方法并将我的 csv 数据插入到:data=pandas.read_csv("my_csv"),之后我尝试使用 data.to_excel(writer,"Sheet1" ) 但我的数据不在 utf-8 中。我该如何解码? + 我不明白我将 K2 单元格作为我的 csv 在现有文件中的起始单元格的位置
  • 您还记得您的解决方案是怎样的吗?我在这里也有类似的问题:stackoverflow.com/questions/61966833/…

标签: python excel csv


【解决方案1】:

读取 CSV

使用pandas.read_csv提取信息

import pandas as pd
df = pd.read_csv(my_filename)

您可能需要指定的选项

  • sep:使用哪个分隔符
  • 编码
  • header:第一行是标签行吗?
  • index_col:第一列是索引

添加到 Excel 工作表

灵感来自:https://stackoverflow.com/a/20221655/1562285 查看pandas.to_excel 文档了解其他可能的选项

book = load_workbook(old_filename)
sheet_name = 'Sheet1'
with pd.ExcelWriter(new_filename, engine='openpyxl')  as writer:

    writer.book = book
    writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

    df.to_excel(writer, sheet_name=sheet_name, startrow=1, startcol=10, engine='openpyxl')

startrow 和 startcol 表示您要在工作表中粘贴数据的位置。

此方法可能会覆盖此工作表上的先前内容。如果是这样,您将不得不遍历 DataFrame 的列和行并将它们半手动添加到工作表中

插入图片

如果您要在外部某处插入图像,您可以使用documentation 中的代码

    from openpyxl.drawing.image import Image
    ws = book['sheet_name_for_images']
    ws['A1'] = 'You should see three logos below'
    img = Image('logo.png')

    # add to worksheet and anchor next to cells
    ws.add_image(img, 'A1')

我没有对此进行测试,您可能需要在 writer.sheets = ... 之前插入此代码

【讨论】:

  • 现在的问题是我现有的 xlsx 文件包含图像,而在新文件中它们不存在:(
  • 来自 Openpyxl 文档:openpyxl does currently not read all possible items in an Excel file so images and charts will be lost from existing files if they are opened and saved with the same name.
  • 新建文件时可以插入图片吗?
  • 我没有测试这个,但我在代码中添加了第一次尝试
【解决方案2】:

使用工作表的单元格方法更新特定单元格

sheet.cell(row=<row>, column=<col>, value=<val>)

在加载工作簿时使用keep_vba=True 通常是个好主意。更多详情请查看the help page

同时检查answer to这个问题。

【讨论】:

  • 谢谢,我试过了,但现在在单元格 K2 中我只有一个字母,而不是我的所有表格..
猜你喜欢
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多