선수로 산다, 때론 좋은 코치로

[golang] 엘라스틱서치로 우리은행 거래내역 분석하기-엑셀파일 읽기 본문

개발 관련/go

[golang] 엘라스틱서치로 우리은행 거래내역 분석하기-엑셀파일 읽기

godsman 2018. 2. 19. 20:39

[golang] 엘라스틱서치로 우리은행 거래내역 분석하기-엑셀파일 읽기


우리은행에서 거래내역으로 다운로드 받은 파일은 엑셀파일(.xls)이다.

golang에서 엑셀파일을 읽어보자. golang excel read를 검색한다.


github 페이지에 접속한다. - https://github.com/tealeg/xlsx

샘플을 이용하여 다운받은 엑셀파일을 읽는다.

package main

import (
    "fmt"
"github.com/tealeg/xlsx"
)

func main() {
excelFileName := "s:\\elastic\\wooribank\\과거거래내역조회2017.xls"
xlFile, err := xlsx.OpenFile(excelFileName)
if err != nil {
fmt.Printf(err.Error())
}
for _, sheet := range xlFile.Sheets {
for _, row := range sheet.Rows {
for _, cell := range row.Cells {
text := cell.String()
fmt.Printf("%s\n", text)
}
}
}
}

한번에 되면 좋을텐데, 에러가 발생한다.

PS S:\go\src\github.com\shyang-oblab\wooribank-csv> go build
PS S:\go\src\github.com\shyang-oblab\wooribank-csv> .\wooribank-csv.exe
zip: not a valid zip filepanic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x28 pc=0x4f9cb7]

goroutine 1 [running]:
main.main()
S:/go/src/github.com/shyang-oblab/wooribank-csv/wooribank-csv.go:14 +0x67

엑셀파일을 읽을 때, zip: not a valid zip filepanic 오류가 발생한다. 확인해 보면 라이브러리는 최신 엑셀파일을 읽을 수 있는데, 우리은행의 엑셀파일은 2003년 포맷이다.

"convert old xls to xlsx"를 검색하면 온라인으로 변환을 제공하는 사이트를 찾을 수 있다. 변환도구나 변환하는 사이트를 이용할 수도 있고, 엑셀이 설치되어 있으면 엑셀에서 읽은 후에 다른이름으로 저장하기에서 "Excel 통합 문서"를 선택하면 된다.

그러면 같은 이름의 확장자만 "xlsx"인 파일로 변환하여 저장한다.

소스코드에서 확장자를 과거거래내역조회2017.xlsx로 변경한 후 다시 실행한다.

983

2017.12.29 15:46

KIS-BANK

0955935003825

251100

0

-2449297

095593


984

2017.12.29 17:48

타행납부

국민—청약저축

100000

0

-2549297

지점

잘 읽어지는 걸 확인할 수 있다.

이후 엑셀파일의 인코딩을  EUC-KR에서 UTF-8로 변환한 후 CSV 파일로 저장한다.


참고자료

Office Migration Planning Manager overview for Office 2010

'Convert XLS' Comprehensive Excel Converter Tool


Comments