何をつくるか
Excelに似たソフトといっても、セルの書式とかシートとかはどうでもよく、ただ文字列の読書きができるような
本当にいらないソフトです。
数値でも文字列と認識しちゃうし、セルのサイズとか結合とかもどうでもよっくなっています。
ソースコード
wxPython・openpyxlをまだインストールしていない場合はインストールしてください。
excel.py
import sys
import wx
import wx.lib.scrolledpanel as scrolled
import openpyxl
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self,None,-1,"Excel(大嘘)")
panel = scrolled.ScrolledPanel(self,-1,size=wx.Size(self.GetSize()[0],self.GetSize()[1]))
panel.SetupScrolling()
self.textctrls = []
self.c = 10
self.r = 20
for col in range(self.c):
for row in range(self.r):
self.textctrls.append(wx.TextCtrl(panel,-1,""))
sizer = wx.FlexGridSizer(self.r,self.c,1,1)
for ctrl in self.textctrls:
sizer.Add(ctrl)
panel.SetSizer(sizer)
MenuBar = wx.MenuBar()
FileMenu = wx.Menu()
FileMenu.Append(1,"開く...")
FileMenu.Append(2,"保存...")
FileMenu.AppendSeparator()
FileMenu.Append(3,"終了")
MenuBar.Append(FileMenu,"ファイル")
self.SetMenuBar(MenuBar)
self.Bind(wx.EVT_MENU,self.SelectMenuBar)
def SelectMenuBar(self,event):
ID = event.GetId()
if ID == 1:
#Excelファイルを開く
dialog = wx.FileDialog(self,"Excelファイルを読み込み",wildcard="Excel File (*.xlsx)|*.xlsx;|All Files|*.*", style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
if dialog.ShowModal() == wx.ID_OK:
wb = openpyxl.load_workbook(dialog.GetPath())
ws = wb.worksheets[0]
i = 0
for r in range(self.r):
for c in range(self.c):
cell = ws.cell(r+1,c+1).value
if cell != None:self.textctrls[i].SetValue(str(cell))
i += 1
elif ID == 2:
#Excelファイルを保存
dialog = wx.FileDialog(self,"Excelファイルを保存",wildcard="Excel File (*.xlsx)|*.xlsx|All Files|*.*",style=wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
if dialog.ShowModal() == wx.ID_OK:
wb = openpyxl.Workbook()
ws = wb.worksheets[0]
i = 0
for r in range(self.r):
for c in range(self.c):
ws.cell(r+1,c+1).value = self.textctrls[i].GetValue()
i += 1
wb.save(dialog.GetPath())
elif ID == 3:
sys.exit()
app = wx.App(0)
MyFrame().Show(True)
app.MainLoop()
実行してみる
Excelにはこう書き込み、Book1.xlsxで保存した。
次に、作ったスクリプトのファイルメニューから「開く」をクリックしてBook1.xlsxを開く
正常に読み込まれた!!!
つぎにこの内容を別名で保存してみる
ファイルメニューの「保存」からExcelファイルで保存可能。
そしてExcelでそれを開いてみると...
数値も文字列になっちゃてるし、セルの大きさも違う。
でも書き込まれたは書き込まれたからいいか。
まだ、
・セルの高さと幅
・数値と文字列
という問題は残っているが、今回はここまで!
もしかしたら更新するかも!