openpyxl içinde .EntireColumn.Insert
böyle bir şey bulamadı. Aklıma gelen
İlk düşünce, bir çalışma üzerinde _cells değiştirerek elle sütun eklemek etmektir. Bunun sütun eklemek için en iyi yol olduğunu sanmıyorum ama işe yarıyor:
from openpyxl.workbook import Workbook
from openpyxl.cell import get_column_letter, Cell, column_index_from_string, coordinate_from_string
wb = Workbook()
dest_filename = r'empty_book.xlsx'
ws = wb.worksheets[0]
ws.title = "range names"
# inserting sample data
for col_idx in xrange(1, 10):
col = get_column_letter(col_idx)
for row in xrange(1, 10):
ws.cell('%s%s' % (col, row)).value = '%s%s' % (col, row)
# inserting column between 4 and 5
column_index = 5
new_cells = {}
ws.column_dimensions = {}
for coordinate, cell in ws._cells.iteritems():
column_letter, row = coordinate_from_string(coordinate)
column = column_index_from_string(column_letter)
# shifting columns
if column >= column_index:
column += 1
column_letter = get_column_letter(column)
coordinate = '%s%s' % (column_letter, row)
# it's important to create new Cell object
new_cells[coordinate] = Cell(ws, column_letter, row, cell.value)
ws._cells = new_cells
wb.save(filename=dest_filename)
Bu çözüm çok çirkin olduğunu anlıyoruz ama bir doğru yönde düşünmeye yardımcı umuyoruz. gayet yapmalıyım gibi
Bu görünüyor. Bunu kullanacağım çalışma sayfası en az birkaç yüz satır uzunluğunda ve sadece iki sütun eklemem gerekiyor, bu yüzden mükemmel çalışmalı. Bunu hemen uygulayacağım. Teşekkürler! – Shawn
Bu işe yarıyorsa, değişecek içsellere büyük ölçüde bağlı olduğuna dikkat etmelisiniz. Kod daha kapsamlı bir çözümü bkz https://bitbucket.org/snippets/openpyxl/qyzKn için de Python 3 ile uyumlu değildir –