首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将openpyxl格式从文本设置为数字

将openpyxl格式从文本设置为数字
EN

Stack Overflow用户
提问于 2021-04-21 04:51:28
回答 1查看 53关注 0票数 1

我有一个excel文件,我正在使用openpyxl输入一些数据。数据当前正以文本形式输入。我正在尝试执行一次循环,以便将我的matrix输入到excel数字类型中。矩阵被添加到excel中没有问题,但是值是以文本而不是数字的形式存储的。我怎样才能改变这一点?我以为将number_format设置为0会起作用,但它似乎不起作用。

代码语言:javascript
运行
复制
for row_num, row in enumerate(matrix, 3):
    for col_num, item in enumerate(row, col_start - 12):
        ws.cell(column=col_num, row=row_num, value=item).number_format = "0"
wb.save(excel_file_path_from_db)

该矩阵由下拉选项中的用户输入值组成:

代码语言:javascript
运行
复制
<td id="row_1_col_3">
               <center>
                   <select style="background-color: #ceedd0;" id="row_1_select_3" onchange="changeSelect('row_1','_col_3','_select_3')" name="filter_for">
             <option value="1">1</option>
             <option value="P">P</option>
             <option value="0">-</option>
             <option selected="selected" value="0">0</option>
</select></center> 

然后,我通过以下方式访问这些值:

代码语言:javascript
运行
复制
matrix = ast.literal_eval(list(request.GET)[0])
EN

回答 1

Stack Overflow用户

发布于 2021-04-21 18:06:32

我猜测item的数据类型是字符串或更通用的类型。我建议:

代码语言:javascript
运行
复制
def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

for row_num, row in enumerate(matrix, 3):
    for col_num, item in enumerate(row, col_start - 12):
        if is_number(item):
            ws.cell(column=col_num, row=row_num, value=float(item))
            ws.cell(column=col_num, row=row_num).number_format = "0"
        else:
            ws.cell(column=col_num, row=row_num, value=item)
wb.save(excel_file_path_from_db)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67186184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档