【Python】Openpyxl로 쓴 값이 지수 표시(E)로 되었다
발생한 문제
Python 라이브러리 openpyxl에서 쓴 값이 E를 사용한 지수 표시의 표시 형식이되었습니다.
sample_code.pyimport openpyxl
wb = openpyxl.open('./Book1.xlsx')
sh = wb['Sheet1']
sh.cell(row=1, column=1).value = 308985489249593041
wb.save('./result.xlsx')
결과
지수 함수를 제거한 표시로 해도 말미가 몇 개 0으로 옮겨져 곤란하다
원인
openpyxl 대신 Excel 사양 문제
Excel 셀에 15자리가 넘는 숫자를 입력하면 15자리를 넘는 숫자는 모두 0으로 변경됩니다.
Excel 셀에 긴 숫자를 입력하면 마지막 숫자가 0으로 변경됩니다.
수치 계산이라면 이 정도의 자릿수라면 약간 정도가 떨어지더라도 문제가되지 않을 것 같습니다.
뭔가 ID라든지 클레카의 번호라든지 1자리라도 다르면 곤란한 것을 쓰고 있는 경우는 곤란하네요
해결책
문자열로 숫자를 쓰는 것이 좋습니다.
sample_code.pyimport openpyxl
wb = openpyxl.open('./Book1.xlsx')
sh = wb['Sheet1']
#ここで書き込む数値をstr型にしてあげる
sh.cell(row=1, column=1).value = str(308985489249593041)
wb.save('./result.xlsx')
이것은 문자열이나 아포스트로피로 시작하는 숫자이기 때문에 화가났지만 쓸 수있었습니다.
덧붙여서 Excel 내에서의 계산은 이 에러 나와도 정상적으로 실시할 수 있다
openpyxl에서 문자열로 작성된 값은 어떤 느낌으로 얻을 수 있습니까?
sample_code.pyimport openpyxl
wb = openpyxl.open('./result.xlsx')
sh = wb['Sheet1']
A1_value = sh.cell(row=1, column=1).value
print(A1_value)
print(type(A1_value))
'''
> 308985489249593041
> <class 'str'>
문자열로 얻은 것 같습니다.
int로 다시 바꿔야합니다.
덧붙여 : 포맷을 지정해 준다
코멘트로 이하의 기사를 소개해 주셨습니다.
openpyxl로 숫자 표시 형식 지정
그래서sh.cell(row= , colum=).number_format =
에 몇 가지 형식을 전달해 보았습니다.
쓰는 수치는 위와 같은 308985489249593041
A 열이 주어진 형식으로 B 열이 결과
오, 대단해. 제대로 포맷이 바뀌고 있네요.
하지만 유감스럽게도 역시 후미는 0으로 바꿀 수 있군요…
B2라든지 캐릭터 라인 포맷이지만 기입하는 시점에서 int형이라면 아마 무리같네요…
후기
더 까다로운 해결 방법이 있습니까?
Excel 플러그인으로 상한 해제 할 수 있다든가 w
알고 계시다면 알려주세요.
Reference
이 문제에 관하여(【Python】Openpyxl로 쓴 값이 지수 표시(E)로 되었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Utsumi_Re/items/881d5d2a161d1357e76e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import openpyxl
wb = openpyxl.open('./Book1.xlsx')
sh = wb['Sheet1']
sh.cell(row=1, column=1).value = 308985489249593041
wb.save('./result.xlsx')
openpyxl 대신 Excel 사양 문제
Excel 셀에 15자리가 넘는 숫자를 입력하면 15자리를 넘는 숫자는 모두 0으로 변경됩니다.
Excel 셀에 긴 숫자를 입력하면 마지막 숫자가 0으로 변경됩니다.
수치 계산이라면 이 정도의 자릿수라면 약간 정도가 떨어지더라도 문제가되지 않을 것 같습니다.
뭔가 ID라든지 클레카의 번호라든지 1자리라도 다르면 곤란한 것을 쓰고 있는 경우는 곤란하네요
해결책
문자열로 숫자를 쓰는 것이 좋습니다.
sample_code.pyimport openpyxl
wb = openpyxl.open('./Book1.xlsx')
sh = wb['Sheet1']
#ここで書き込む数値をstr型にしてあげる
sh.cell(row=1, column=1).value = str(308985489249593041)
wb.save('./result.xlsx')
이것은 문자열이나 아포스트로피로 시작하는 숫자이기 때문에 화가났지만 쓸 수있었습니다.
덧붙여서 Excel 내에서의 계산은 이 에러 나와도 정상적으로 실시할 수 있다
openpyxl에서 문자열로 작성된 값은 어떤 느낌으로 얻을 수 있습니까?
sample_code.pyimport openpyxl
wb = openpyxl.open('./result.xlsx')
sh = wb['Sheet1']
A1_value = sh.cell(row=1, column=1).value
print(A1_value)
print(type(A1_value))
'''
> 308985489249593041
> <class 'str'>
문자열로 얻은 것 같습니다.
int로 다시 바꿔야합니다.
덧붙여 : 포맷을 지정해 준다
코멘트로 이하의 기사를 소개해 주셨습니다.
openpyxl로 숫자 표시 형식 지정
그래서sh.cell(row= , colum=).number_format =
에 몇 가지 형식을 전달해 보았습니다.
쓰는 수치는 위와 같은 308985489249593041
A 열이 주어진 형식으로 B 열이 결과
오, 대단해. 제대로 포맷이 바뀌고 있네요.
하지만 유감스럽게도 역시 후미는 0으로 바꿀 수 있군요…
B2라든지 캐릭터 라인 포맷이지만 기입하는 시점에서 int형이라면 아마 무리같네요…
후기
더 까다로운 해결 방법이 있습니까?
Excel 플러그인으로 상한 해제 할 수 있다든가 w
알고 계시다면 알려주세요.
Reference
이 문제에 관하여(【Python】Openpyxl로 쓴 값이 지수 표시(E)로 되었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Utsumi_Re/items/881d5d2a161d1357e76e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import openpyxl
wb = openpyxl.open('./Book1.xlsx')
sh = wb['Sheet1']
#ここで書き込む数値をstr型にしてあげる
sh.cell(row=1, column=1).value = str(308985489249593041)
wb.save('./result.xlsx')
import openpyxl
wb = openpyxl.open('./result.xlsx')
sh = wb['Sheet1']
A1_value = sh.cell(row=1, column=1).value
print(A1_value)
print(type(A1_value))
'''
> 308985489249593041
> <class 'str'>
더 까다로운 해결 방법이 있습니까?
Excel 플러그인으로 상한 해제 할 수 있다든가 w
알고 계시다면 알려주세요.
Reference
이 문제에 관하여(【Python】Openpyxl로 쓴 값이 지수 표시(E)로 되었다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Utsumi_Re/items/881d5d2a161d1357e76e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)