일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- node.js
- 날짜
- PER
- 리눅스
- pandas
- javascript
- python
- ubuntu
- urllib
- port
- MS-SQL
- Unity
- 유니티
- tensorflow
- 라즈베리파이
- GIT
- ASP
- flutter
- MySQL
- Excel
- 함수
- PyQt5
- IOS
- mssql
- swift
- PyQt
- 다이어트
- sqlite
- Linux
- 맛집
아미(아름다운미소)
[python]방대한 XLS (Excel) 파일을 읽고(쓰기) 본문
물론 COM 호출을 통하여 모든 셀 내용에 접근할 수 있지만, 너무 느린 단점이 있습니다.
간단한 트릭이 있어요: 그냥 엑셀에게 XLS 파일을 열어 그것을 CSV로 저장해 달라고 요구한 다음,
파이썬의 CSV 모듈을 사용하여 그 파일을 읽어 들이면 됩니다!
이 방법이 방대한 XLS 데이터 파일을 읽는 가장 빠른 방법입니다.
import os import win32com.client filename = 'myfile.xls' filepath = os.path.abspath(filename) # 언제나 확실하게 절대 경로를 사용하자! # 엑셀을 시작하고 XLS 파일을 연다: excel = win32com.client.Dispatch('Excel.Application') excel.Visible = True workbook = excel.Workbooks.Open(filepath) # CSV로 저장한다: xlCSVWindows =0x17 # from enum XlFileFormat workbook.SaveAs(Filename=filepath+".csv",FileFormat=xlCSVWindows) # 작업책과 엑셀을 닫는다. workbook.Close(SaveChanges=False) excel.Quit()힌트: 이 트릭을 다른 곳에서도 사용할 수 있습니다.
힌트: excel.Workbooks.Open()을 사용할 때,os.path.abspath()로 언제나 확실하게 절대 경로를 사용해야합니다.
힌트: 또한 엑셀에게 HTML로 저장해 달라고 요청한 다음, 그 HTML을 htmllib이나 sgmllib 또는 BeautifulSoup로 해석할 수도 있습니다. 포맷팅, 컬러, 셀 스팬, 문서 저자나 심지어 수식에 이르기까지 더 많은 정보를 얻을 수 있을 것입니다. !
힌트: 엑셀 VBA 문서는 *.chm을 C:\Program Files\Microsoft Office\에서 검색해 보세요
예를 들어: 엑셀 2000이라면, C:\Program Files\Microsoft Office\Office\1036\VBAXL9.CHM이 도움말입니다.
힌트: VBA 도움말 파일을 헤매지 않고서 한 행위에 상응하는 VBA 코드를 찾고 싶다면, 그냥 그 행위에 대한 매크로를 기록한 다음 열어 보세요!
이렇게 하면 자동으로 VBA 코드가 만들어집니다 (손쉽게 파이썬으로 변환할 수 있습니다).
이 트릭을 보여주는 비디오를 만들었습니다 (프랑스어에요, 죄송): http://sebsauvage.net/temp/wink/excel_vbarecord.html
힌트: 가끔, 엑셀 상수가 필요하다. 상수 목록을 얻으려면:
1. makepy.py를 실행합니다 (예- C:\Python24\Lib\site-packages\win32com\client\makepy.py)
2. 목록에서, "Microsoft Excel 9.0 Object Library (1.3)" (뭐 그런거)를 선택해서 ok를 클릭합니다.
3.
C:\Python24\Lib\site-packages\win32com\gen_py\ 디렉토리를 들여다 보시면.
그 라이브러리를 감싼 포장자가 보일 것입니다
4. (예를 들어 00020813-0000-0000-C000-000000000046x0x1x3.py)
5.
이 파일을 엽니다: Excel 상수와 그의 값이 들어있습니다 (그것을 코드에 붙여 넣으면 됩니다.)
예를 들어:
xlCSVMSDOS =0x18 # from enum XlFileFormat xlCSVWindows =0x17 # from enum XlFileFormat
힌트: 데이터를 엑셀 안으로 넣고 싶으면, 파이썬으로 HTML 문서를 만들어 Excel에게 그 파일을 열도록 요구할 수도 있습니다. 셀 폰트 색상이나 기타 등등을 설정할 수 있을 것.
작은-힌트 1: 생성된 HTML 코드에 \n을 많이 사용합시다 (특히 </td> 뒤에 말이다).
엑셀은 기다란 줄을 좋아하지 않아요.
작은-힌트 2: CSS 스타일을 사용하여 여러 셀을 포맷하거나 색상을 설정할 수도 있습니다.
그냥 생성된 HTML에 <style> 스타일 시트를 포함시켜 두면 됩니다.
작은-힌트 3: CSS를 사용하면, 심지어 셀 포맷도 할 수 있습니다 (텍스트, 숫자, 등등).
예를 들어, <style><!--.mystyle{mso-number-format:"\@";}--></style> 이라면
<td class=mystyle>25</td>를 사용하여 셀을 강제로 텍스트 셀로 만들 수 있습니다.
(충분히 쓸모가 있습니다.
예를 들어, 엑셀이 국제 전화 번호를 계산하지 못하도록 막는데 말이 - 멍청이 어플리케이션 !)
또는 mso-number-format:"0\.000";로 하면 3자리 정밀도로 숫자 포맷을 강제할 수 있다.
'랭귀지 > python' 카테고리의 다른 글
[python]사용자의 홈 디렉토리 경로 얻는 법 (0) | 2017.12.23 |
---|---|
[BeautifulSoup]웹에서 정보 가져오기 (0) | 2017.12.22 |
[python]crawler 샘플 (0) | 2017.12.21 |
Python 에서 Mysql 사용 하기 (0) | 2017.12.20 |
urllib2: 무엇을 받고 있는 거지? (0) | 2017.12.19 |