提问人:reviker 提问时间:10/23/2023 更新时间:10/23/2023 访问量:30
在 Python XlsxWriter Excel365 中使用日期设置中心格式
Center formating with date in Python XlsxWriter Excel365
问:
我在格式化日期单元格时遇到问题,同时使用 Python 中的 Pandas 从 MS SQL 检索数据并将其传输到 Excel365。 将数据输入Excel后,日期列未采用“center”和“vcenter”格式。我不知道为什么
import os.path
import sqlalchemy as db
import pandas as pd
from io import BytesIO
from PIL import Image
conn_string = "mssql+pyodbc://user:user@localhost/db?driver=ODBC+Driver+17+for+SQL+Server"
table_name = "table_name"
photo_path = "D:/tmp/product_photos/"
file_data_path = "D:/tmp/pythonProject/Project1/data/"
plik = file_data_path + "File_"
engine = db.create_engine(conn_string)
connection = engine.connect()
def photo_extensions(path):
files = [file for file in os.listdir(path) if os.path.isfile(os.path.join(path, file))]
ext_dict = {}
for file in files:
file_name, file_extension = os.path.splitext(file)
ext_dict[file_name] = file
return ext_dict
with conn:
df_raw = pd.read_sql("select top 10 * from table_name", connection)
df_mag = df_raw["magazine"].unique().tolist()
sku_extension = photo_extensions(photo_path)
df_raw["images"] = photo_path + df_raw["sku"].map(sku_extension)
mag_list = df_raw["magazine"].unique()
if not df_raw.empty:
for mag in mag_list:
row = 2
file_name = plik + mag + ".xlsx"
df_for_mag = df_raw[df_raw["magazine"] == mag]
writer = pd.ExcelWriter(file_name, engine="xlsxwriter")
df_for_mag.to_excel(writer, sheet_name="Sheet1", index=False)
workbook = writer.book
worksheet = writer.sheets["Sheet1"]
cell_format = workbook.add_format()
for image in df_for_mag["images"]:
if pd.notna(image):
data = BytesIO(open(image, "rb").read())
row_insert = "K" + str(row)
im = Image.open(image)
width = im.size[0]
height = im.size[1]
worksheet.set_row_pixels(row-1, height)
worksheet.set_column_pixels("K:K", width)
worksheet.insert_image(row_insert, image, {"image_data": data})
worksheet.write_blank(row-1, 10, None, cell_format)
row += 1
center_format = workbook.add_format({"align": "center", "valign": "vcenter"})
worksheet.set_column("A:J", None, center_format)
worksheet.autofit()
name_format = workbook.add_format({"align": "left", "valign": "vcenter"})
worksheet.set_column("C:C", 50, name_format)
date_format = workbook.add_format({"align": "center", "valign": "vcenter"})
worksheet.set_column("G:G", None, date_format)
writer.save()
print(file_name)
输出:在此处输入图像描述
我尝试将格式更改为 ,但它是相同的输出。
我尝试从日期库中获取字符串格式的日期,但随后 excel 看到的是文本,而不是日期{'num_format': 'yyyy-mm-dd'}
答: 暂无答案
评论