Helpex - Trao đổi & giúp đỡ Đăng nhập
12

Tôi đang tạo một bảng điều khiển excel và tôi muốn tạo một sổ làm việc excel có một số khung dữ liệu trên một nửa trang tính và tệp .png cho nửa còn lại. Tôi đang gặp khó khăn khi ghi chúng vào cùng một tệp trong một lần. Đây là những gì tôi hiện có. Có vẻ như khi tôi chạy vòng lặp for, nó sẽ không cho phép tôi thêm các trang tính bổ sung. Bất kỳ lời khuyên nào về cách tôi có thể thêm tệp hình ảnh của mình vào sổ làm việc này? Tôi không thể tìm thấy bất cứ điều gì về lý do tại sao tôi không thể thêm bất kỳ trang tính nào nữa Cảm ơn!

dfs = dict()
dfs['AvgVisitsData'] = avgvisits
dfs['F2FCountsData'] = f2fcounts

writer = pd.ExcelWriter("MyData.xlsx", engine='xlsxwriter')
for name, df in dfs.items():
    df.to_excel(writer, sheet_name=name, index = False)

Sau đó, tôi muốn thêm một vài trang tính với một số hình ảnh vào cùng một sổ làm việc excel. Một cái gì đó như thế này, nhưng tôi không tạo một sổ làm việc hoàn toàn mới.

workbook = xlsxwriter.Workbook('MyData.xlsx')
worksheet = workbook.add_worksheet('image1')
worksheet.insert_image('A1', 'MemberCollateral.png')

Bất cứ ai có bất kỳ lời khuyên để giải quyết vấn đề này?

12 hữu ích 5 bình luận 12k xem chia sẻ
15

Dưới đây là một ví dụ về cách lấy một xử lý cho sổ làm việc XlsxWriter và các đối tượng trang tính và chèn một hình ảnh:

import pandas as pd


# Create a Pandas dataframe from some data.
df = pd.DataFrame({'Data': [10, 20, 30, 20, 15, 30, 45]})

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_image.xlsx', engine='xlsxwriter')

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')

# Get the xlsxwriter workbook and worksheet objects.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

# Insert an image.
worksheet.insert_image('D3', 'logo.png')

# Close the Pandas Excel writer and output the Excel file.
writer.save()

Đầu ra:

Python: Ghi hình ảnh và khung dữ liệu vào cùng một tệp excel

Xem thêm Làm việc với Python Pandas và XlsxWriter trong tài liệu XlsxWriter để biết thêm ví dụ

15 hữu ích 0 bình luận chia sẻ
0

Đây là giải pháp tôi đã đưa ra. Tôi vẫn không tìm ra cách nào để thực hiện việc này mà không cần nhập lại sổ làm việc với load_workbooknhưng điều này đã hoàn thành công việc.

# assign dataframes to dictionary and export them to excel
avgvisits = pd.DataFrame(pd.read_sql(avgvisits(), cnxn))
f2fcounts = pd.DataFrame(pd.read_sql(f2fcounts(), cnxn))
activityencounters = pd.DataFrame(pd.read_sql(ActivityEncounters(), cnxn))
activityencountersp = activityencounters.pivot_table(values='ActivityCount', index = ['Activity'], columns= ['QuarterYear'], aggfunc=np.max)

dfs = dict()
dfs['AvgVisitsData'] = avgvisits
dfs['F2FIndirect'] = f2fcounts
dfs['ActivityEncounters'] = activityencountersp

writer = pd.ExcelWriter("MyData.xlsx", engine='xlsxwriter')
for name, df in dfs.items():
    if name != 'ActivityEncounters':
        df.to_excel(writer, sheet_name=name, index=False)
    else:
        df.to_excel(writer, sheet_name=name, index=True)

writer.save()
writer.close()

# re-import the excel book and add the graph image files
wb = load_workbook('MyData.xlsx')
png_loc = 'MemberCollateral.png'
wb.create_sheet('MemberCollateralGraph')
ws = wb['MemberCollateralGraph']
my_png = openpyxl.drawing.image.Image(png_loc)
ws.add_image(my_png, 'A1')

png_loc = 'DirectIndirect.png'
ws = wb['F2FIndirect']
my_png = openpyxl.drawing.image.Image(png_loc)
ws.add_image(my_png, 'A10')

png_loc = 'QuarterlyActivitySummary.png'
ws = wb['ActivityEncounters']
my_png = openpyxl.drawing.image.Image(png_loc)
ws.add_image(my_png, 'A10')
wb.save('MyData.xlsx')
0 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ python excel pandas , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading