2012年10月30日火曜日

Pythonでxls(xlsx)ファイルを開いてデータ取得

Pythonでxls(xlsx)ファイルを開くにはxlrdというライブラリを使えばおk。

Ubuntuであれば sudo aptitude install python-xlrd で入ります。
ただUbuntu12.04だとバージョンが古く(0.6らしい)、これだとxlsxが開けません。

xlsxも開きたければ、PyPIから最新版を持ってくる必要があります。
 http://pypi.python.org/pypi/xlrd
ここからダウンロードしたファイルを展開して、できたディレクトリの中で、sudo python setup.py install でおk。

↓みたいな感じでいけます。日本語(UTF-8)も普通に通る。

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

import xlrd
book = xlrd.open_workbook(u"/home/tani/ああああ.xlsm")
print "The number of worksheets is", book.nsheets
print "First Worksheet name:", unicode(book.sheet_by_index(0).name)
sh = book.sheet_by_index(0)
print "Cell C6 is", unicode(sh.cell_value(rowx=5, colx=2))

2012年10月1日月曜日

LibO Calcで数字の前の'(シングルクオーテーション)を削除

Calcで数字の前に「'」がくっついて文字列になってしまった後、「'」だけを削除する方法。ぐぐったら外人さんが以下の方法書いてました。

検索と置換で、正規表現を有効にして、検索テキストに「^.」、置換テキストに「&」を入れて「すべて置換」でおk

実際に試してみると、たしかに動きます。なんでこれで動くのかさっぱりわかりませんが。。。
イザとなったらマクロでもつくろうかと思ってましたが、マクロで作るにしても置換機能のAPI使ったほうが早そうです。

追記:
↑と同じ動作を行うマクロ

Sub CleanCell
    oSelection = ThisComponent.getCurrentController().getSelection()
    If oSelection.supportsService("com.sun.star.sheet.SheetCellRange") = False Then
        Exit Sub
    End If
   
    oRD = oSelection.createReplaceDescriptor()
    oRD.SearchString = "^."
    oRD.ReplaceString = "&"
    oRD.SearchRegularExpression = True
    oSelection.replaceAll(oRD)
End Sub