2013-05-02 654 views
5

我试图从我使用openpyxl创建的excel工作表中删除网格线,但它不工作。 我这样做:使用python(openpyxl)从excel中删除网格线

wb = Workbook() 
ws = wb.get_active_sheet() 
ws.show_gridlines = False 
print ws.show_gridlines 
wb.save('file.xlsx') 

的是代码打印“假”,但保存的文件显示网格线。

回答

5

openpyxl问题跟踪器中有一个相关issue。另外,根据源代码show_gridlines只是一个工作表类属性,根本没有任何影响。只要看问题就可以获得更新。

作为一种替代解决方案,尝试新的和真棒xlsxwriter模块。它可以隐藏工作表上的网格线(请参阅docs)。这里有一个例子:

from xlsxwriter.workbook import Workbook 

workbook = Workbook('hello_world.xlsx') 
worksheet = workbook.add_worksheet() 

worksheet.write('A1', 'Hello world') 
worksheet.hide_gridlines(2) 

workbook.close() 
+1

xlsxwriter看起来不错。感谢您的链接。你是否描述过它?它与xlwt相比如何?我过去使用过openpyxl,如果你写很多单元,它比xlwt慢。 – sherve 2013-05-03 13:06:44

+1

是的,看起来很有前途!不幸的是,我还没有分析它。仅供参考,有关性能主题的[某些信息](https://xlsxwriter.readthedocs.org/en/latest/working_with_memory.html)。另外,显然,它只能用于'xlsx'。 – alecxe 2013-05-03 13:21:47

+1

XlsxWriter的+1。 @sherve:我做了一些非正式的性能测试,对我来说XlsxWriter与xlwt相比,明显快于openpyxl。 – 2013-05-06 22:06:24

1

这被固定在2015年

这里是推荐的解决方案(从issue说明)

from openpyxl import Workbook 
wb = Workbook() 
ws = wb.active 
ws.sheet_view.showGridLines 
True 
ws.sheet_view.showGridLines = False 
wb.save("gridlines.xlsx") 

要注意的是,你应该输入ws.sheet_view.showGridLines,而不是 ws.showGridLines