擅长:python、mysql、java
<p>一般来说,您希望列的宽度比列中最长字符串的大小大一点。xlsxwriter列的with of 1单位约等于一个字符的宽度。因此,可以通过将每个列设置为该列中的最大字符数来模拟自动调整。</p>
<p>例如,在使用pandas数据帧和xlsxwriter时,我倾向于使用下面的代码。</p>
<p>它首先查找索引的最大宽度,该宽度始终是pandas用于excel呈现数据帧的左列。然后,它返回所有值的最大值以及从左到右移动的其余每列的列名。</p>
<p>无论您使用的是什么样的数据,调整此代码应该不会太困难。</p>
<pre><code>def get_col_widths(dataframe):
# First we find the maximum length of the index column
idx_max = max([len(str(s)) for s in dataframe.index.values] + [len(str(dataframe.index.name))])
# Then, we concatenate this to the max of the lengths of column name and its values for each column, left to right
return [idx_max] + [max([len(str(s)) for s in dataframe[col].values] + [len(col)]) for col in dataframe.columns]
for i, width in enumerate(get_col_widths(dataframe)):
worksheet.set_column(i, i, width)
</code></pre>