2016-06-23 2 views
0

변환하고자하는 exelfile이 있지만 숫자의 기본 유형은 float입니다. xlwings이 명시 적으로 문자열이 아닌 숫자를 사용하도록 어떻게 변경할 수 있습니까? xw.Range(sheet, fieldname).valuexlwings에서 모든 필드를 문자열로 읽으려면 어떻게해야합니까?

문제는 내가 그에서 문자열을 작성하는 경우 40 같은 번호가 40.0로 변환 얻을 수 있습니다 :

이 내가 필드의 값을 읽는 방법이다. 나는 그것과 함께 스트립 : str(xw.Range(sheetFronius, fieldname).value).rstrip('0').rstrip('.')하지만 그게별로 도움이되지 않습니다 그리고 때로는 동일한 필드에 숫자와 문자열을 포함 할 수 있기 때문에 오류가 발생합니다. (동시에, 값은 목록에서 선택되지 않음)

답변

2

읽기/쓰기 작업 중에 옵션을 설정하지 않으면 단일 셀이 '부동'으로 읽혀집니다. 또한 기본적으로 숫자가있는 셀은 '부동'으로 읽습니다. 나는 문서를 샅샅이 뒤졌지만 xlwings를 통해 숫자가있는 문자열을 '문자열'로 변환 할 수 있다고 생각하지 않습니다. 다행히도 모든 것이 손실되지 않습니다 ...

xlwings을 사용하여 'int'로 셀을 읽고 파이썬에서 'int'를 'string'으로 변환 할 수 있습니다.

xw.Range(sheet, fieldname).options(numbers=int).value 

그리고를 마지막으로 당신이 (선불 옵션으로 문자열 변환을 포장하여) 데이터에이 방법을 읽을 수 있습니다 : 다음과 같이 그 작업을 수행하는 방법입니다

xw.Range(sheet, fieldname).options(numbers=lambda x: str(int(x))).value 

그럼 그냥 것 그것을 일반적인 방법으로 파이썬의 문자열로 변환하십시오.

행운을 빈다.

+1

'xw.Range (sheet, fieldname) .options (numbers = lambda x : str (int))) 값' –

+0

에 감사드립니다. 그 필드에 문자열이있을 수 있기 때문에 그렇게 사용하지 마십시오. – simonides

+1

@simonides 람다 식은 숫자에만 적용되며 문자열은 변경되지 않습니다. –

관련 문제