将图像和数据从csv文件插入到xlsx文件

时间:2018-08-25 16:26:36

标签: python image csv xlsx

大家好,我是Python新手,但我有一个问题,希望您能为我提供帮助。

我正在使用Raspberry Pi拍照,然后将其保存到特定文件中,并且在csv文件中也有数据,我要做的是从该文件夹中获取图像并将其保存到特定的单元格中数据也一样。 假设第1张图片保存了row1 col1中的数据。问题是,我不知道csv文件中将包含多少数据以及多少图像,但是图像数始终与csv文件中的数据数相同。我的代码如下所示:

onChildMoved

我得到的结果如下所示: here is my results

如果我有30个以上的图像和名称(数据),我想知道如何向xlsx文件中插入更多图像和数据

1 个答案:

答案 0 :(得分:1)

您可以在A1函数中指定行号和列号(零索引),而不是使用.write()表示法。添加Python的enumerate()函数,它将为您提供一个计数器rowy,您可以将其用作行号。

假设您的k1.csv文件如下所示:

Image 1,trki,present
Image 2,Tgjkt,present
Image 3,Abcd,not present

它将从该文件读取每一行,并将其放入XLSX文件的另一行。在您的示例中,行的间隔为第9行,因此* 9乘以使用的行号,如果需要连续的行,可以将其删除。

import xlsxwriter
import csv

workbook = xlsxwriter.Workbook('k.xlsx')
worksheet = workbook.add_worksheet('sheet1')

worksheet.set_column('A:A', 15)
worksheet.set_column('B:B', 10)

with open('k1.csv', newline='') as csv_file:
    csv_reader = csv.reader(csv_file)

    for rowy, row in enumerate(csv_reader):
        worksheet.write(rowy * 9, 0, row[0])
        worksheet.write(rowy * 9, 1, row[1] )
        worksheet.write(rowy * 9, 2, row[2] )
        worksheet.insert_image(rowy * 9, 3, "1.png" , {'x_scale': 0.3, 'y_scale': 0.3})

workbook.close()            

如果您仍在使用Python 2.x,请更改此行:

with open('k1.csv', 'rb') as csv_file:

注意:如果再次运行该脚本,它将用新文件覆盖现有的k.xlsx。它不会在末尾附加新信息。因此,如果您的CSV文件仅包含一行,则会显示它仅写入第一行。

要在每次运行脚本时附加新信息,则需要读取其中的现有文件,确定上次使用的行号,然后从此刻起写入新项。 xlsxwriter库无法执行此操作,它只能写入新文件。您将需要使用openpyxl库来完成此操作。