我正在编写一个iPython笔记本,该笔记本将提取.csv文件的内容并将其粘贴到.xlsx文件的指定选项卡中。 .xlsx上的标签充满了一系列预编程公式,因此我可以对.csv文件的原始内容进行分析。
但是,我遇到了一个麻烦,因为我将日期字段从.csv复制到.xlsx文件中。
Excel公式无法正确处理日期,除非我双击日期单元格或在日期列上应用Excel的“文本到列”功能并将一个选项卡设置为定界符(我应该注意,不拆分单元格)。
我想知道是否有办法...
编写一个辅助函数以双击并返回日期列的每一行
from openpyxl import load_workbook
import pandas as pd
def transfer_hours(report_name, ER_hours_analysis_wb):
df = pd.read_csv(report_name, index_col=0)
book = load_workbook(ER_hours_analysis_wb)
sheet_name = "ER Work Log"
with pd.ExcelWriter("ER Hours Analysis 248112.xlsx",
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=0, engine='openpyxl')
答案 0 :(得分:0)
被设计为与熊猫一样伟大的工具,在这种情况下,可能没有理由包括在内。
这是您要完成的工作的简短结构:
import csv
import datetime
from openpyxl import load_workbook
def transfer_hours(report_name, ER_hours_analysis_wb):
wb = load_workbook(ER_hours_analysis_wb)
ws = wb['ER Work Log']
csvfile = open(report_name, 'rt')
reader = csv.reader(csvfile,delimiter=',')
#iterators
rownum = 0
colnum = 0
for row in reader:
for col in row:
dttm = datetime.datetime.strptime(col, "%m/%d/%Y")
ws.cell(column=colnum,row=rownum).value = dttm
wb.save('new_spreadsheet.xlsx')
从这里开始,您可以根据CSV的位置,找出哪些列应具有哪种格式。这是一个示例:
for row in reader:
ws.cell(column=0,row=rownum,value=row[0])
dttm = datetime.datetime.strptime(row[1], "%m/%d/%Y")
ws.cell(column=1,row=rownum).value = dttm
供参考:
https://openpyxl.readthedocs.io/en/stable/usage.html
答案 1 :(得分:0)
使用xlsx模块
import xlsx
load_workbook ( filen = (filePath, read_only=False, data_only=False )
将data_only设置为False将返回公式,而data_only = True将返回非公式值。