2009-08-27 14 views
5

タスク:
pythonパッケージのpyExcelerator(xlwtに匹敵する)を使って、CSVファイルから整形されたExcelテーブルを生成します。私は、より小さいか等しい(≤)とより大きいか等しい(≧)記号を書くことができる必要があります。これまでのところpythonパッケージpyExcelerator/xlwtで特殊文字を書く


私はPythonのソースコードに次の行を追加して、私のテキストエディタで特殊文字を表示できるように、私は、UTF-8エンコーディングでCSV-ファイルとして私のテーブルを保存することができます

#! /usr/bin/env python 
# -*- coding: UTF-8 -*- 

問題:
ただし、pyExceleratorのFontクラスでは、フォントとしてUTF-8を選択するオプションはありません。唯一のオプションは次のとおりです。これらの文字セットのいずれかがより少なくよりまたは等しく-へと大なりイコールより-または-兆候を

CHARSET_ANSI_LATIN   = 0x00 
CHARSET_SYS_DEFAULT   = 0x01 
CHARSET_SYMBOL    = 0x02 
CHARSET_APPLE_ROMAN   = 0x4D 
CHARSET_ANSI_JAP_SHIFT_JIS = 0x80 
CHARSET_ANSI_KOR_HANGUL  = 0x81 
CHARSET_ANSI_KOR_JOHAB  = 0x82 
CHARSET_ANSI_CHINESE_GBK = 0x86 
CHARSET_ANSI_CHINESE_BIG5 = 0x88 
CHARSET_ANSI_GREEK   = 0xA1 
CHARSET_ANSI_TURKISH  = 0xA2 
CHARSET_ANSI_VIETNAMESE  = 0xA3 
CHARSET_ANSI_HEBREW   = 0xB1 
CHARSET_ANSI_ARABIC   = 0xB2 
CHARSET_ANSI_BALTIC   = 0xBA 
CHARSET_ANSI_CYRILLIC  = 0xCC 
CHARSET_ANSI_THAI   = 0xDE 
CHARSET_ANSI_LATIN_II  = 0xEE 
CHARSET_OEM_LATIN_I   = 0xFF 

含まれていますか?もしそうなら、どちらですか?
これらのセットに対応するPythonエンコーディング名はどれですか? これらの特殊文字を生成する別の方法はありますか?

答えて

4

この問題を抱えすぎている可能性があります。文字のエンコードは可能かもしれませんが、このフォントには問題はありません。

いずれにせよ、私は次のスクリプトよりも等しくレスと大なり、等号とExcelスプレッドシートを作成するxlwtを使用することができたが:

import xlwt 
wb = xlwt.Workbook() 
ws = wb.add_sheet('Test Sheet') 
lte = u'\u2264' 
gte = u'\u2265' 
ws.write(0,0,lte+gte) 
wb.save('foo.xls') 

なお - - コーディング:utf-8 - - 特殊文字はユニコード数値インデックスでエンコードされているため、必須ではありません。可能であれば、一般的にユニコードを使用することをお勧めします。

utf-8を使用して、文字を直接Pythonコードに入力することもできます。これは、文字が入力されている方法以外はまったく同じになります。しかし

#-*- coding: utf-8 -*- 
import xlwt 
wb = xlwt.Workbook() 
ws = wb.add_sheet('Test Sheet') 
lte = u'≤' 
gte = u'≥' 
ws.write(0,0,lte+gte) 
wb.save('foo.xls') 

注意、あなたがUTF-8としてPythonコードを保存している意識あるエディタを使用しなければならないということ。あなたのエディタが他の方法でファイルをエンコードする場合、特殊文字はPythonインタプリタによって読み込まれたときに正しく解析されません。

+0

ありがとう、それは(3)に – SimonSalman

1

(1)Re: "" " 私のテーブルをUTF-8エンコーディングで保存することができますので、私のテキストエディタで特殊文字を見ることができます。コード:

#! /usr/bin/env python
# -*- coding: UTF-8 -*-
「」」UTF-8でエンコードされた文字を含むファイルを書き込むことができること

は、ファイルを書き込むプログラムのソースで使用されているものエンコーディングに依存しません!

(2)UTF-8はフォントではなくエンコーディングです。 Excel FONTレコードのこれらの文字セットは、過去のAFAIKからの爆発です。私はcharsetのデフォルト以外のものを使う必要があると思っていたxlwtユーザから聞いたことがありません。あなたがシステムに適切なフォントを持っているならば(OpenOffice Calcに文字を表示できるかどうかを見てください)、OKでなければなりません。Jasonが示したようにxlwtにユニコードオブジェクトを送ります。

(3)xlwtの代わりにpyExceleratorを使用する特別な理由はありますか?

+0

を解決しました: 私はちょうどpyExceleratorを見つけてそれをインストールしました。代わりにxlwtをお勧めしますか? – SimonSalman

+3

@SimonSalman:もちろん:-) ...開示:私は 'xlwt'のメンテナーです。 –

5

これは pyexceleratorか xlwtを使用してUTF-8文字を書くことを支援する必要があります

wb = xlwt.Workbook(**encoding='utf-8'**) 

編集:

はそれがpyexceleratorのために働いていないようだが、私はそれを確認したhaventは。

+0

@yoshi:pyExceleratorではあまり役に立ちません。ハードコーデッドのデフォルトエンコーディング(cp1251)を持っています。 xlwtには、2007年2月に呼び出し元指定のデフォルトエンコード機能が追加されました。pyExceleratorは維持されません。質問:UTF-8文字は何ですか? –

+0

@ John Machin:UTF-8文字で、私はASCIIではなくUTF-8を使ってエンコードされた文字を意味しました。何か間違っていますか? – yoshi