2013-05-02 4 views
5

Я пытаюсь удалить сетки с листа excel, который я создал с помощью openpyxl, и он не работает. Я делаю это:Удаление линий сетки из excel с использованием python (openpyxl)

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

, что код печатает «False», но сохраненный файл показывает линию сетки.

ответ

5

Существует issue в openpyxl вопросник. Кроме того, в соответствии с исходным кодом 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

+1

Yup, выглядит многообещающим! К сожалению, я не профилировал его. FYI, вот [информация] (https://xlsxwriter.readthedocs.org/ru/latest/working_with_memory.html) по теме производительности. Плюс, очевидно, он может работать только с 'xlsx'. – alecxe

+1

+1 для XlsxWriter. @sherve: Я провел некоторое неофициальное тестирование производительности, и для меня XlsxWriter сопоставим с xlwt и заметно быстрее, чем openpyxl. –

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 ,

Смежные вопросы