개요
원래 게시물 이후 거의 10 년이 지나도 Excel은 CSV 파일 가져 오기 기능이 향상되지 않았습니다. 그러나 HTML 테이블을 가져 오는 것이 훨씬 낫다는 것을 알았습니다. 따라서 Python을 사용하여 CSV를 HTML로 변환 한 다음 결과 HTML을 Excel로 가져올 수 있습니다.
이 접근 방식의 장점은 다음과 같습니다. (a) 안정적으로 작동합니다. (b) 데이터를 타사 서비스 (예 : Google 시트)로 보낼 필요가 없습니다. (c) 추가 "지방"설치가 필요하지 않습니다 (LibreOffice, 대부분의 사용자에 대한 숫자 등) (d) CR / LF 문자 및 BOM 마커를 사용하는 것보다 높음 (e) 로케일 설정을 사용하지 않아도됩니다.
단계
다음 단계는 Python 3이 설치되어있는 한 모든 bash 유사 쉘에서 실행할 수 있습니다. Python을 사용하여 CSV를 직접 읽을 수는 있지만 csvkit 은 JSON으로 중간 변환을 수행하는 데 사용됩니다. 이를 통해 Python 코드에서 CSV 복잡성을 처리하지 않아도됩니다.
먼저 다음 스크립트를로 저장하십시오 json2html.py
. 이 스크립트는 stdin에서 JSON 파일을 읽고 HTML 테이블로 덤프합니다.
#!/usr/bin/env python3
import sys, json, html
if __name__ == '__main__':
header_emitted = False
make_th = lambda s: "<th>%s</th>" % (html.escape(s if s else ""))
make_td = lambda s: "<td>%s</td>" % (html.escape(s if s else ""))
make_tr = lambda l, make_cell: "<tr>%s</tr>" % ( "".join([make_cell(v) for v in l]) )
print("<html><body>\n<table>")
for line in json.load(sys.stdin):
lk, lv = zip(*line.items())
if not header_emitted:
print(make_tr(lk, make_th))
header_emitted = True
print(make_tr(lv, make_td))
print("</table\n</body></html>")
그런 다음 가상 환경에 csvkit을 설치 csvjson
하고 입력 파일을 스크립트에 공급하는 데 사용하십시오. -I
인수 를 사용하여 셀 유형 추측을 비활성화하는 것이 좋습니다 .
$ virtualenv -p python3 pyenv
$ . ./pyenv/bin/activate
$ pip install csvkit
$ csvjson -I input.csv | python3 json2html.py > output.html
지금 output.html
Excel에서 가져올 수 있습니다. 셀의 줄 바꿈이 유지됩니다.
선택적으로 Python 가상 환경을 정리할 수 있습니다.
$ deactivate
$ rm -rf pyenv