# 导入pandas
import pandas as pd
# 原数据信息
path_original = r"D:\Files\test\股票数据_original.xlsx".replace('\\', '/')
path_target = r"D:\Files\test\股票数据_target.xlsx".replace('\\', '/')
# 表头列表
colums_list = [
'股票代码',
'股票简称',
'申购代码',
'发行总数(万股)',
'网上发行(万股)',
'申购上限(万股)',
'顶格申购需配市值(万元)',
'发行价格',
'发行市盈率',
'行业市盈率',
'申购日期',
'中签率(%)',
'中签号',
'中签缴款日期',
'上市日期',
'打新收益(元)',
'涨停数量'
]
# 定义表头格式
format_header_config = {
'font_name': '宋体', # 字体
'font_color': 'red', # 字体颜色
'size': 10, # 字体大小
'bold': 1, # 加粗
'border': 1, # 边框宽度
'align': 'center', # 水平对齐方式i
'valign': 'vcenter', # 垂直对齐方式
'fg_color': '#FFFF00', # 背景色
'text_wrap': 1, # 自动换行
}
# 定义行样式
format_row_config = {
'font_name': "宋体",
'size': 11,
'border': 1,
'align': 'center',
'valign': 'vcenter',
'text_wrap': 1
}
# 定义首列样式
format_col_first = {
'font_name': "宋体",
'size': 10,
'border': 1,
'align': 'center',
'valign': 'vcenter',
'text_wrap': 1,
'font_color': '#0070C0', # 字体颜色
'underline': 1 # 下划线
}
# 读取数据
df_original = pd.read_excel(path_original, names=colums_list, dtype=object)
# 处理缺失值
df_original = df_original.dropna(thresh=5).fillna('-')
# 在首列生成超链接
def make_hyperlink(value):
url = "https://www.baidu.com"
return '=HYPERLINK("%s","%s")' % (url, value)
df_original["股票代码"] = df_original["股票代码"].apply(lambda x: make_hyperlink(str(x)))
# 创建写excel对象
writer = pd.ExcelWriter(path=path_target)
# 生成excel
df_original.to_excel(
excel_writer=writer,
sheet_name="股票数据-第1页",
index=False
)
# 选择workbook
workbook = writer.book
worksheets = writer.sheets
worksheet = worksheets["股票数据-第1页"]
# 冻结窗格
worksheet.freeze_panes(1, 2)
# worksheet.set_row(0, height=40, cell_format=format_header)
worksheet.set_column('A:Q', 12) # 设置列宽
# 设置表头格式
format_header = workbook.add_format(format_header_config)
for col_num, value in enumerate(df_original.columns):
worksheet.write(0, col_num, value, format_header)
# # 设置行样式
format_row = workbook.add_format(format_row_config)
format_col = workbook.add_format(format_col_first)
for index, value in df_original.iterrows():
for col_num in range(17):
col_value = value[col_num]
col_value = col_value.split()[0] if isinstance(col_value, str) else col_value
format_cell = format_col if col_num == 0 else format_row
worksheet.write(index + 1, col_num, value[col_num], format_cell)
# 添加链接
writer.save()
writer.close()
pandas操作excel
最新推荐文章于 2023-11-20 08:05:35 发布