"OpenPyXL에서""압축되지 않는 파일""이 설정된 파일을 저장하려면"
개시하다
데스크톱 버전의 Excel로 OpenPyXL로 저장된 xlsx 파일을 열면 '파일 안의 그림을 압축하지 않기' 의 체크 상자를 닫습니다.
확인란에 파일을 열고 저장할 때 문답 없이 닫을 수도 있습니다.
엑셀로 열었을 때 상세 설정에서 확인하면 되지만, 파이톤이 어렵게 자동 생성돼 수동 조작을 생략하려고 했다.
그래.
검증된 환경
릴리즈
Python
3.8.1
openpyxl
3.0.5
어쨌든 대처법.
다음 기록을 통해 압축되지 않은 xlsx 파일을 만들 수 있습니다.
create_xlsx.py#!/usr/bin/env python
import openpyxl
from openpyxl.workbook.properties import WorkbookProperties
from openpyxl.utils.datetime import CALENDAR_MAC_1904
from openpyxl.workbook._writer import WorkbookWriter
def write_properties_custom(self):
props = WorkbookProperties()
if self.wb.code_name is not None:
props.codeName = self.wb.code_name
if self.wb.excel_base_date == CALENDAR_MAC_1904:
props.date1904 = True
props.autoCompressPictures = False
self.package.workbookPr = props
WorkbookWriter.write_properties = write_properties_custom
wb = openpyxl.Workbook()
wb.save("Sample.xlsx")
중요한 것은 props.autoCompressPictures = False
곳이다.
이 코드로 제작된 xlsx 파일의 상세한 설정을 보면 잘 검사되었는지 확인할 수 있습니다.
프로그램 라이브러리를 강제로 고쳤기 때문에 예상치 못한 동작을 할 수도 있습니다.
혹시 모르니까 조심해서 사용하세요.
조사 결과 메모
다음은 조사의 내용과 상세한 내용을 질질 끌며 쓰시오.
안 읽어도 돼.
말하기 시작하다
OpnePyXL에는 모듈WorkbookProperties이 있습니다.
autoCompressPictures라는 변수가 있는데 True/False를 설정하고 저장하면 반영될 것 같습니다.
그러나 워크북 대상의 속성은 설정되지 않았습니다.
그렇게 말하지만 아까 모듈에 이미 존재했기 때문에 고려하지 않은 건 아니라고 생각해서 많이 봤어요.
OpenPyXL 저장 작업 정보
저장할 때 Workbook 클래스의 save 방법 사용하기
#!/usr/bin/env python
import openpyxl
from openpyxl.workbook.properties import WorkbookProperties
from openpyxl.utils.datetime import CALENDAR_MAC_1904
from openpyxl.workbook._writer import WorkbookWriter
def write_properties_custom(self):
props = WorkbookProperties()
if self.wb.code_name is not None:
props.codeName = self.wb.code_name
if self.wb.excel_base_date == CALENDAR_MAC_1904:
props.date1904 = True
props.autoCompressPictures = False
self.package.workbookPr = props
WorkbookWriter.write_properties = write_properties_custom
wb = openpyxl.Workbook()
wb.save("Sample.xlsx")
다음은 조사의 내용과 상세한 내용을 질질 끌며 쓰시오.
안 읽어도 돼.
말하기 시작하다
OpnePyXL에는 모듈WorkbookProperties이 있습니다.
autoCompressPictures라는 변수가 있는데 True/False를 설정하고 저장하면 반영될 것 같습니다.
그러나 워크북 대상의 속성은 설정되지 않았습니다.
그렇게 말하지만 아까 모듈에 이미 존재했기 때문에 고려하지 않은 건 아니라고 생각해서 많이 봤어요.
OpenPyXL 저장 작업 정보
저장할 때 Workbook 클래스의 save 방법 사용하기
이 write () 에서 호출된 writeproperties()로 속성을 설정하는 중입니다.
이번에 이 방법에 처리를 추가하였다.
Workbook Properties()의 초기 값으로 설정할 수 있다고 생각합니다.
xlsx 파일 정보
작업장 속성에 대한 상세한 정보여기.에 기재되어 있습니다.
autoComporess Pictures는 1 또는 True에서 압축(기본값은 True)되기 때문에 Flashe를 설정합니다.
참고로 OpenPyXL의 Workbook Properties에 관한 다른 항목도 상세하게 기재되어 있습니다.
라이브러리 덮어쓰기 정보
여기 기사를 참고했어요.
Python으로 라이브러리 처리 덮어쓰기
단지 본래 있어야 할 형식으로, 기재된 두 가지 항목처럼,self.wb.***확인해서 설정해야 되는 거 아닌가 해서요.
이번에는 귀찮아서 강제로 트루로 삼았다.
Reference
이 문제에 관하여("OpenPyXL에서""압축되지 않는 파일""이 설정된 파일을 저장하려면"), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nagabin/items/7da79190689fbd9fa4e8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)