Всем привет, возник вопросик по созданию PDF из таблицы excel в питоне, библиотека fpdf.
Есть 7 столбцов из excel и теперь нужно загрузить их в лист pdf, но когда делаю команду pdf.multi_cell то следующий столбец вставляется после предыдущего и никак не хочет рядом, пробовал задание координат x и y, безуспешно, он просто меняет их на том листе, на котором конец другого столбца.
вывод делал через массив
Есть 7 столбцов из excel и теперь нужно загрузить их в лист pdf, но когда делаю команду pdf.multi_cell то следующий столбец вставляется после предыдущего и никак не хочет рядом, пробовал задание координат x и y, безуспешно, он просто меняет их на том листе, на котором конец другого столбца.
вывод делал через массив
from fpdf import FPDF
from PyPDF2 import PdfFileMerger, PdfMerger, PdfFileReader, PdfWriter, PdfReader
import pandas as pd
pd.set_option('display.max_colwidth', None)
pdf = FPDF(orientation='L', unit='mm', format='A4') # создание листа
pdf.add_font("Sans", style="", fname="Roboto-Medium.ttf", uni=True) # добавление шрифта sans
pdf.add_font("Sans2", style="", fname="Roboto-Regular.ttf", uni=True) # добавление шрифта regular
pdf.add_page() # добавление страницы
pdf.set_font("Sans", size=12) # размер шрифта
pdf.cell(200, 10, txt="привет", ln=1, align="C") # сам текст
pdf.add_page() # добавить страницу
path = 'F:/test/0004.png' # путь к картинке
pdf.image(path, x = 25, y = 25, w = 250, h = 0) # вставка картинки и координаты
pdf.add_page() # добавить страницу
df = pd.read_excel('F:/test/0018.xlsx') # добавить таблицу
# df = df.groupby("ADSK_Наименование").agg({"Длина":'sum',
# "ADSK_Единица измерения":'first',
# "ADSK_Завод-изготовитель":'first',
# "ADSK_Количество":'sum',
# "Шифр РД":'first',
# }).reset_index()
# df.drop(columns = ['Id', 'ADSK_Обозначение', 'ADSK_Единица измерения',
# 'ADSK_Завод-изготовитель',
# 'ADSK_Количество',
# 'Шифр РД',
# 'BD_Помещение',
# 'Длина',
# 'Файл источника'], axis = 1, inplace=True) # удалить столбцы
df.sort_values(by = 'Шифр РД', ascending=False) # сортировка по ШИФР рд
# text = df.to_string() # перевод в текст
# text_experssion = text # перевод в текст
a1 = df['ADSK_Наименование']
a2 = df['ADSK_Обозначение']
a3 = df['ADSK_Единица измерения']
a4 = df['ADSK_Завод-изготовитель']
a5 = df['ADSK_Количество']
a6 = df['Шифр РД']
a7 = df['Длина']
text = a1.to_string() # перевод в текст
text1 = a2.to_string() # перевод в текст
text2 = a3.to_string() # перевод в текст
text3 = a4.to_string() # перевод в текст
text4 = a5.to_string() # перевод в текст
text5 = a6.to_string() # перевод в текст
text6 = a7.to_string() # перевод в текст
while text.find(' ') != -1:
text = text.replace(' ', ' ')
text1 = text1.replace(' ', ' ')
text2 = text2.replace(' ', ' ')
text3 = text3.replace(' ', ' ')
text4 = text4.replace(' ', ' ')
text5 = text5.replace(' ', ' ')
text6 = text6.replace(' ', ' ')
# from fpdf.enums import XPos, YPos
pdf.set_font("Sans2", size = 8) # размер шрифта
#pdf.multi_cell(40, 4, text, border = 1, align = 'L')
for row in text, text2, text3, text4, text5, text6:
pdf.multi_cell(ln = 1,w = 40, h = 4, txt=row, border=1)
#pdf.set_xy(col_x, col_y)
#pdf.multi_cell(col_witdh, col_hight, text2, border = 1)
pdf.output("simple_demo.pdf") # печать
from PyPDF2 import PdfFileMerger, PdfMerger, PdfFileReader, PdfWriter, PdfReader
import pandas as pd
pd.set_option('display.max_colwidth', None)
pdf = FPDF(orientation='L', unit='mm', format='A4') # создание листа
pdf.add_font("Sans", style="", fname="Roboto-Medium.ttf", uni=True) # добавление шрифта sans
pdf.add_font("Sans2", style="", fname="Roboto-Regular.ttf", uni=True) # добавление шрифта regular
pdf.add_page() # добавление страницы
pdf.set_font("Sans", size=12) # размер шрифта
pdf.cell(200, 10, txt="привет", ln=1, align="C") # сам текст
pdf.add_page() # добавить страницу
path = 'F:/test/0004.png' # путь к картинке
pdf.image(path, x = 25, y = 25, w = 250, h = 0) # вставка картинки и координаты
pdf.add_page() # добавить страницу
df = pd.read_excel('F:/test/0018.xlsx') # добавить таблицу
# df = df.groupby("ADSK_Наименование").agg({"Длина":'sum',
# "ADSK_Единица измерения":'first',
# "ADSK_Завод-изготовитель":'first',
# "ADSK_Количество":'sum',
# "Шифр РД":'first',
# }).reset_index()
# df.drop(columns = ['Id', 'ADSK_Обозначение', 'ADSK_Единица измерения',
# 'ADSK_Завод-изготовитель',
# 'ADSK_Количество',
# 'Шифр РД',
# 'BD_Помещение',
# 'Длина',
# 'Файл источника'], axis = 1, inplace=True) # удалить столбцы
df.sort_values(by = 'Шифр РД', ascending=False) # сортировка по ШИФР рд
# text = df.to_string() # перевод в текст
# text_experssion = text # перевод в текст
a1 = df['ADSK_Наименование']
a2 = df['ADSK_Обозначение']
a3 = df['ADSK_Единица измерения']
a4 = df['ADSK_Завод-изготовитель']
a5 = df['ADSK_Количество']
a6 = df['Шифр РД']
a7 = df['Длина']
text = a1.to_string() # перевод в текст
text1 = a2.to_string() # перевод в текст
text2 = a3.to_string() # перевод в текст
text3 = a4.to_string() # перевод в текст
text4 = a5.to_string() # перевод в текст
text5 = a6.to_string() # перевод в текст
text6 = a7.to_string() # перевод в текст
while text.find(' ') != -1:
text = text.replace(' ', ' ')
text1 = text1.replace(' ', ' ')
text2 = text2.replace(' ', ' ')
text3 = text3.replace(' ', ' ')
text4 = text4.replace(' ', ' ')
text5 = text5.replace(' ', ' ')
text6 = text6.replace(' ', ' ')
# from fpdf.enums import XPos, YPos
pdf.set_font("Sans2", size = 8) # размер шрифта
#pdf.multi_cell(40, 4, text, border = 1, align = 'L')
for row in text, text2, text3, text4, text5, text6:
pdf.multi_cell(ln = 1,w = 40, h = 4, txt=row, border=1)
#pdf.set_xy(col_x, col_y)
#pdf.multi_cell(col_witdh, col_hight, text2, border = 1)
pdf.output("simple_demo.pdf") # печать
for row in text, text2, text3, text4, text5, text6:
pdf.multi_cell(ln = 1,w = 40, h = 4, txt=row, border=1)
pdf.multi_cell(ln = 1,w = 40, h = 4, txt=row, border=1)