-1

やあ。Python で xlwt パッケージを使用して、Excel ファイルに書き込むアプリケーションを作成しています。

テキストに合わせてセルを十分に大きくできるように、セルの希望の幅を返す関数があります。ただし、大文字のテキストを書いていると、実際のテキストよりもはるかに小さい幅が返されるため、関数が壊れます。

何が問題なのかわからない。アドバイスをいただければ幸いです。

def getWidth(self, num_characters):
    """ Returns the approximate width of a cell. """
    return int((1+num_characters) * 256)
4

1 に答える 1

0

この関数で行っていることは、getWidthどれだけのスペースが必要になるかを推測することだけです。あなたが推測している理由は、各文字が異なる量のスペースを占めるためです (「iiii」は「mmmmm」よりもスペースを占有しません)。明らかに、大文字はより多くのスペースを占有します。

この問題には、2 つの簡単な (ただし完全ではない) 修正方法があります。

  1. すべてのセルの文字あたりの幅を広げます。これは、関数の値 256 を変更することを意味します。50%増やすと、おそらく問題が解決すると思います。
  2. 挿入する前に、セルに挿入するものをすべて小文字にしてください。

オプション 1 のコードは、既にあるものとかなり似ています。

def getWidth(self, num_characters):
    """ Returns the approximate width of a cell. """
    return int((1+num_characters) * 384)

lowerオプション 2 のコードでは、挿入する前に文字列に対してメソッドを呼び出す必要があります。次のようになります。

my_cell_value = "THIS IS ALL CAPS!"
my_worksheet.write(1,1,my_cell_value.lower())
于 2012-12-17T21:28:22.243 に答える