비망록(openpyxl에서 ①다른 북으로부터의 코피페②대조표 참조)
개요
전회 기사에서 제 2 스텝으로 한 「표 1의 대조표를 사용해 각 행에 설정 1/설정 2를 붙인다」가 우선 실장할 수 있었기 때문에 정리해 둔다.
htps : // 이 m / ぇ ぇ l ぇ l 3176 / ms / 7d 981b479c5933bf5f
성과
도 1에 도시 된 원시 데이터 및 대조표로부터도 2의 결과의 자동 생성에 성공
그림 1 좌:생데이터 오른쪽:대조표
programimport openpyxl
wb1=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/data3.xlsx')
ws1=wb1.active
#対照表をマスターとして別に用意しておく。マスター側からは数式では無く数値を引っ張りたいので、data_only=trueで開く
wb2=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/table.xlsx',data_only=True)
ws2=wb2.active
for i in range(12):
for j in range(3):
copy = ws2.cell(row = i+1, column = j+3).value
ws1.cell(row = i+1, column =j+10,value=copy)
#別ブックからの参照が上手く行かなかったので対照表を一度コピペ
#rangeはi=0から始まるが、行と列は1から始まるので調整
min_row=2
max_row=ws1.max_row #2行目から最終行まで処理を掛けるので行数取得
ws1["H1"].value="設定1"
ws1["I1"].value="設定2" #見出しは入力した方が早かった
for i in range(min_row, max_row):
ws1.cell(row=i, column=7).value ="=D{}&E{}".format(i,i)
#7列目に区分+業務を入力
ws1.cell(row=i, column=8).value ="=INDEX($J$1:$L$12,match(G{},$J$1:$J$12,0),2)".format(i)
ws1.cell(row=i, column=9).value ="=INDEX($J$1:$L$12,match(G{},$J$1:$J$12,0),3)".format(i)
#INDEXを使い、参照表と7列目を照会。結果を入力
wb1.save('/content/drive/My Drive/Colab Notebooks/data4.xlsx')
문제점
・그림 2의 G열 J열 K열 L열은 후공정에서 불필요하므로 지우고 싶지만, 참조를 사용하고 있으므로 지울 수 없다.
⇨ 강인한 해결책으로서 data4를 data_only=true로 열고 불필요한 열 이외를 새로운 파일에 복사하는 손은 있지만, 쓸데없는 처리한 생각이 든다.
· 다른 책의 참조 방법을 모른다.
이번은 table.xlsx의 내용을 data4.xlsx에 복사하고, 그 후 INDEX 함수를 사용했지만,
아무래도 생각해도 처음부터 table.xlsx를 참조하는 것이 좋다・・・하지만, 기술 방법을 찾을 수 없어.
다음 과제로 한다.
Reference
이 문제에 관하여(비망록(openpyxl에서 ①다른 북으로부터의 코피페②대조표 참조)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wellwell3176/items/e6a17609c7398dd7d496
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
도 1에 도시 된 원시 데이터 및 대조표로부터도 2의 결과의 자동 생성에 성공
그림 1 좌:생데이터 오른쪽:대조표
program
import openpyxl
wb1=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/data3.xlsx')
ws1=wb1.active
#対照表をマスターとして別に用意しておく。マスター側からは数式では無く数値を引っ張りたいので、data_only=trueで開く
wb2=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/table.xlsx',data_only=True)
ws2=wb2.active
for i in range(12):
for j in range(3):
copy = ws2.cell(row = i+1, column = j+3).value
ws1.cell(row = i+1, column =j+10,value=copy)
#別ブックからの参照が上手く行かなかったので対照表を一度コピペ
#rangeはi=0から始まるが、行と列は1から始まるので調整
min_row=2
max_row=ws1.max_row #2行目から最終行まで処理を掛けるので行数取得
ws1["H1"].value="設定1"
ws1["I1"].value="設定2" #見出しは入力した方が早かった
for i in range(min_row, max_row):
ws1.cell(row=i, column=7).value ="=D{}&E{}".format(i,i)
#7列目に区分+業務を入力
ws1.cell(row=i, column=8).value ="=INDEX($J$1:$L$12,match(G{},$J$1:$J$12,0),2)".format(i)
ws1.cell(row=i, column=9).value ="=INDEX($J$1:$L$12,match(G{},$J$1:$J$12,0),3)".format(i)
#INDEXを使い、参照表と7列目を照会。結果を入力
wb1.save('/content/drive/My Drive/Colab Notebooks/data4.xlsx')
문제점
・그림 2의 G열 J열 K열 L열은 후공정에서 불필요하므로 지우고 싶지만, 참조를 사용하고 있으므로 지울 수 없다.
⇨ 강인한 해결책으로서 data4를 data_only=true로 열고 불필요한 열 이외를 새로운 파일에 복사하는 손은 있지만, 쓸데없는 처리한 생각이 든다.
· 다른 책의 참조 방법을 모른다.
이번은 table.xlsx의 내용을 data4.xlsx에 복사하고, 그 후 INDEX 함수를 사용했지만,
아무래도 생각해도 처음부터 table.xlsx를 참조하는 것이 좋다・・・하지만, 기술 방법을 찾을 수 없어.
다음 과제로 한다.
Reference
이 문제에 관하여(비망록(openpyxl에서 ①다른 북으로부터의 코피페②대조표 참조)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wellwell3176/items/e6a17609c7398dd7d496
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(비망록(openpyxl에서 ①다른 북으로부터의 코피페②대조표 참조)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wellwell3176/items/e6a17609c7398dd7d496텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)