mirror of
https://gitee.com/mktime/python-learn.git
synced 2025-12-07 01:04:56 +08:00
修复xlrd在读取xls中金额时的问题
This commit is contained in:
@@ -2,6 +2,7 @@ import xlrd
|
||||
import openpyxl
|
||||
from xlutils.copy import copy
|
||||
import os
|
||||
from decimal import Decimal
|
||||
|
||||
class XLSHelper:
|
||||
def __init__(self, fpath=None):
|
||||
@@ -42,14 +43,35 @@ class XLSHelper:
|
||||
if not self.read_sheet:
|
||||
raise ValueError('先调用load_sheet')
|
||||
return self.read_sheet.cell_value(row, column)
|
||||
|
||||
#如果小数位只有1位 则把第二位小数的0删除, etc: 0.10 --> 0.1
|
||||
# thanks to: https://www.cnblogs.com/feifeifeisir/p/15246080.html
|
||||
def _remove_exponent(self, num):
|
||||
return num.to_integral() if num == num.to_integral() else num.normalize()
|
||||
|
||||
def get_rows_values(self):
|
||||
row_count = self.read_sheet.nrows
|
||||
col_count = self.read_sheet.ncols
|
||||
rows_data = []
|
||||
for i in range(row_count):
|
||||
row_data = self.read_sheet.row_values(i)
|
||||
for row in range(row_count):
|
||||
row_data = []
|
||||
for col in range(col_count):
|
||||
cell = self.read_sheet.cell(row, col)
|
||||
value = cell.value
|
||||
ctype = cell.ctype
|
||||
# 针对number特殊处理
|
||||
if ctype == xlrd.XL_CELL_NUMBER:
|
||||
# print(type(value), value, str(value))
|
||||
value = str(self._remove_exponent(Decimal(value).quantize(Decimal('.01'), rounding = 'ROUND_HALF_UP')))
|
||||
# print(value)
|
||||
row_data.append(value)
|
||||
rows_data.append(row_data)
|
||||
return rows_data
|
||||
# rows_data = []
|
||||
# for i in range(row_count):
|
||||
# row_data = self.read_sheet.row_values(i)
|
||||
# rows_data.append(row_data)
|
||||
# return rows_data
|
||||
|
||||
def write_cell_value(self, row, col, value):
|
||||
if not self.write_sheet:
|
||||
|
||||
Reference in New Issue
Block a user