【问题标题】:ipysheets modify layout: wrap text, column widthipysheets 修改布局:换行、列宽
【发布时间】:2021-01-05 01:28:41
【问题描述】:

我正在使用 ipysheets 在 jupyter 中显示交互式工作表。

我正在关注文档: https://readthedocs.org/projects/ipysheet/downloads/pdf/latest/

我只是不知道如何在创建后更改 ipysheet 的布局。

我希望有特定宽度的列,并使文本相对于特定列的内容进行换行(即,如果文本太长,则在单元格内强制换行)

import ipysheet as ip
import pandas as pd
API_link_to_data='https://raw.githubusercontent.com/jenfly/opsd/master/opsd_germany_daily.csv' 

energyDF = pd.read_csv(API_link_to_data)
energy_ip = ip.sheet(ip.from_dataframe(energyDF))
energy_ip

当打印出 energy_ip(一个 ipysheet 表格对象)时,我希望能够固定列的宽度(以像素为单位或如何)。

不过看起来好像没有这样的属性:

ipysheet.easy.column(column, 
    value, 
    row_start=0, 
    row_end=None, 
    type=None, 
    color=None, 
    background_color=None, 
    font_style=None, 
    font_weight=None, 
    style=None, 
    choice=None, 
    read_only=False, 
    numeric_format=’0.000’, 
    date_format=’YYYY/MM/DD’, 
    renderer=None, **kwargs)

有什么想法吗?

【问题讨论】:

    标签: python width jupyter spreadsheet


    【解决方案1】:

    会做以下事情,希望它能回答你的问题:

    import ipysheet as ip
    import pandas as pd
    import ipywidgets as w 
    
    
    API_link_to_data='https://raw.githubusercontent.com/jenfly/opsd/master/opsd_germany_daily.csv' 
    
    energyDF = pd.read_csv(API_link_to_data)
    energyDF['comment'] = 'this column will have line breaks'
    
    energy_ip = ip.sheet(ip.from_dataframe(energyDF))
    # set column widths
    energy_ip.column_width = [10,10,5,5,5,10]
    energy_ip.layout = w.Layout(width='500px',height='100%')
    for k,c in enumerate(energy_ip.cells):
        c.style['textAlign']='center'
        c.send_state()
    
    energy_ip
    

    【讨论】:

    • # 这对我帮助很大:sheet.column_width = [10,10,5,5,5,10]
    【解决方案2】:

    您需要创建样式才能实现此目的。 尝试使用 style={'width:50px'}

    【讨论】:

    • 非常接近,但还没有。 energy_ip.easy.column(style={'width:50px'}) 不起作用。 energy_ip.easy.column(style={'width':'50px'}) 都没有。
    • energy_ip.column(3,[1,2,3,4,5],style={'width':'50px'}) 都不是。更改第 3 列的前 5 个元素的值,但样式不变。结果与 style={'width':'50px'} 与 style={'width':'5px'} 相同
    • 这个答案需要更具体一点,正如@JFerro 所表达的那样。
    猜你喜欢
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多