반응형
openpyxl을 사용하여 열 삽입
기존 엑셀 문서를 수정하는 스크립트를 작업하고 있는데 VBA 매크로 명령처럼 다른 두 열 사이에 열을 삽입할 수 있는 기능이 필요합니다..EntireColumn.Insert
.
openpyxl로 이런 열을 삽입할 수 있는 방법이 있습니까?
만약 그렇지 않다면, 그것을 쓰는 것에 대한 조언이 있습니까?
다음은 훨씬 더 빠른 방법의 예입니다.
import openpyxl
wb = openpyxl.load_workbook(filename)
sheet = wb.worksheets[0]
# this statement inserts a column before column 2
sheet.insert_cols(2)
wb.save("filename.xlsx")
같은 것을 찾지 못했습니다..EntireColumn.Insert
openpyxl로
워크시트의 _cells를 수정하여 열을 수동으로 삽입하는 것이 가장 먼저 생각났습니다.열을 삽입하는 가장 좋은 방법은 아니지만 효과가 있습니다.
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)
이 해결책이 매우 추악하다는 것은 이해하지만 올바른 방향으로 생각하는 데 도움이 되기를 바랍니다.
언급URL : https://stackoverflow.com/questions/15826305/insert-column-using-openpyxl
반응형
'programing' 카테고리의 다른 글
도커 MariaDB, phpmyadmin mysqli:: real_connect(): (HY000/2002): php_network_getaddrinfo: getaddrinfo 실패:이름이 확인되지 않습니다. (0) | 2023.08.14 |
---|---|
cmake 컴파일러 테스트를 건너뛰거나 "error: 인식할 수 없는 옵션 '-rdynamic'을 피할 수 있습니까?" (0) | 2023.08.14 |
python: OperationalError: near "%: 구문 오류 (0) | 2023.08.14 |
JavaScript를 사용하여 'div' 상단에서 창 상단까지의 거리 결정 (0) | 2023.08.14 |
iPhone: 탐색 모음 제목 설정 (0) | 2023.08.14 |