2016-05-09 2 views
1

set_columnを動作させようとしていました。パンダがうまく動作するのに問題があるので、xlsxwriterだけでやっています。今度は: 'worksheet.set_column(' D:D '、None、format4)' - これはxlsxファイルに移動し、実際に "D"列の各セルをアクティブにすると機能するようです。私はそれを手動で行う必要がないように、各セルをアクティブにするいくつかの方法はありますか?各セルを手動でアクティブにするまでSet_columnが機能しない

ありがとうございます。

import xlsxwriter,os,sys,datetime 
now=datetime.datetime.now() 
def main(): 
    platform=sys.platform 
    if platform.find('win')>=0: 
     TheSlash='\\' 
    else: 
     TheSlash='/' 
    output = '%s-%s.xlsx' % ('XlsxSample',now.strftime("%m%d%Y-%H%M")) 
    workbook = xlsxwriter.Workbook(output, {'strings_to_numbers':True,'default_date_format':'mm/dd/yy hh:mm'}) 
    worksheet = workbook.add_worksheet() 
    count=0 
    counter=0 
    format=workbook.add_format({'font_size':'8','border':True}) 
    formatdict={'num_format':'mm/dd/yy hh:mm'} 
    format4=workbook.add_format(formatdict) 
    cur =('Pole1','33.62283963','-90.54639967','4/20/16 11:43','-90.54640226','33.62116957','5207069','25-04','50','3','PRIMARY','PGC') 
    for name in cur: 
     worksheet.write(counter, count, name,format) 
     count+=1 
    counter+=1 
    worksheet.set_column('D:D',None,format4) 
    workbook.close() 
if __name__ == "__main__": 
    main() 

上記のように、日付形式はカーソルで「D」セル自体に入るとアクティブに見えるだけです。

+0

'set_column()'には既知の問題はありません。問題を示す小さな完全な実例を投稿できますか? – jmcnamara

+0

従うべき作業サンプル – Slihthinden

+0

サイドノート:あなたのサンプルコードで全く使われていない 'TheSlash'を少しテストします。しかし私はあなたがここには含まれていない本格的なプログラムでは、パス名に 'TheSlash'を使用していると推測しています。一般的に、区切り記号を知る必要はありません。ほとんどの場合、Windowsでも普通のスラッシュを使うことができます。もしあなたが本当にあなたのプラットフォームのプライマリパス区切りを知っていなければ、あなたのrigamaroleの代わりに 'os.sep'を使ってください。 –

答えて

2

列の日付形式が列のセルに表示されないという理由は、プログラムがここでセルの書式で上書きされていることである:エクセル、セルフォーマットのように、XlsxWriterで

for name in cur: 
    worksheet.write(counter, count, name,format) 
    count+=1 

列形式をオーバーライドします。

2つの結合形式の結果であるセルまたは列形式を使用する場合は、これらの形式を組み合わせた新しい形式を作成し、セルまたは列に適用する必要があります。

更新:また、D列に文字列を書き込んでいることに気付きました。Excelの日付は書式設定された数値です。これはおそらく、あなたがリターンをヒットしたときにセルデータの変化を見る理由です。 Excelは、日付のような文字列を日付として表示された書式設定された数値に変換しています。 XlsxWriterでは、変換を行う必要があります。 XlsxWriterドキュメントのWorking with Dates and Timeセクションを参照してください。

+0

if if/else文のif if == 3: '' worksheet.write(counter、count、name、format4) '' else: '' worksheet.write(counter、count、name、format) ' – Slihthinden

+0

理論的にはそうですが、D列の文字列をExcelの日付に変換する必要もあります。私の更新を参照してください。 – jmcnamara

+0

'datetime.datetime.strptime()'呼び出しをする必要があることがわかりましたが、うまくいきました。私はデータベースから引き出すための日付のレポートをたくさん持っているので、私に多くの助けてください。助けてくれてありがとう - 私は日時設定についてのメモを追加すると考えました。 – Slihthinden

関連する問題