我正在快速创建工作表,并且没有为它们命名任何名称。我无法冻结第一列和第一行。在将工作表添加到工作簿时,我对命名工作表感到厌烦,但它确实起作用了。然而,它在运行时并不起作用。下面是代码
base = xlwt.Workbook()
for k,v in MainDict.items():
base.add_sheet(k.upper())
col_width = 256 * 50
xlwt.add_palette_colour("custom_colour", 0x21)
pattern = 'url:(.*)'
search = re.compile(pattern)
base.set_colour_RGB(0x21, 251, 228, 228)
style = xlwt.easyxf('pattern: pattern solid, fore_colour custom_colour;font : bold on;alignment: horiz center;font: name Times New Roman size 20;font:underline single')
index = MainDict.keys().index(k)
ws = base.get_sheet(index)
ws.set_panes_frozen(True)
try:
for i in itertools.count():
ws.col(i).width = col_width
except ValueError:
pass
style1 = xlwt.easyxf('font: name Times New Roman size 15')
style2 = xlwt.easyxf('font : bold on;font: name Times New Roman size 12')
col=0
for sk in MainDict[k].keys():
ws.write(0,col,sk.upper(),style)
col+=1
row =1
for mk in MainDict[k][sk].keys():
for lk,lv in MainDict[k][sk][mk].items():
for items in lv:
text = ('%s URL: %s')%(items,lk)
links =('No data Found. Please visit the URL: %s')% (lk)
url = re.findall(pattern,text)
if len(items) != 0:
if re.match(pattern,text)==True:
ws.write(row,col-1,url,style2)
else:
ws.write(row,col-1,text,style1)
row+=1
else:
ws.write(row,col-1,links,style2)
#ws.Column(col-1,ws).width = 10000
row+=1
default_book_style = base.default_style
default_book_style.font.height = 20 * 36
base.save('project7.xls')发布于 2014-08-01 11:19:46
你必须使用
ws.set_panes_frozen(True)
ws.set_horz_split_pos(1)
ws.set_vert_split_pos(1) 使冻结生效。
发布于 2015-01-15 11:59:24
这不起作用的原因可能是"get_sheet()函数的结果。相反,将add_sheet()调用存储到"ws“并使用它:
#base.add_sheet(k.upper())
ws = base.add_sheet(k.upper())然后,您需要以下属性序列来冻结顶行:
#ws = base.get_sheet(index)
#ws.set_panes_frozen(True)
ws.set_horz_split_pos(1)
ws.set_vert_split_pos(1)
ws.panes_frozen = True
ws.remove_splits = True我使用您的代码片段测试了这一点,它在我这一端工作。
作为参考,您可以通过函数或赋值来设置这些属性:
ws.set_panes_frozen(True)
ws.set_remove_splits(True)https://stackoverflow.com/questions/24974472
复制相似问题