wxPython + openpyxl で Excelににほんの少し似たソフトを作ってみる

#何をつくるか
Excelに似たソフトといっても、セルの書式とかシートとかはどうでもよく、ただ文字列の読書きができるような
本当にいらないソフトです。
数値でも文字列と認識しちゃうし、セルのサイズとか結合とかもどうでもよっくなっています。

#ソースコード

wxPython・openpyxlをまだインストールしていない場合はインストールしてください。

```Python: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()

```

#実行してみる

![ece.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1061021/cb0cc2de-4bec-e003-6a9d-7c4d5e4ad6d6.png)

Excelにはこう書き込み、Book1.xlsxで保存した。

次に、作ったスクリプトのファイルメニューから「開く」をクリックしてBook1.xlsxを開く

![ece2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1061021/b8b748a9-ca19-89b6-0379-c3b7f3c2c058.png)

正常に読み込まれた！！！

つぎにこの内容を別名で保存してみる
ファイルメニューの「保存」からExcelファイルで保存可能。

そしてExcelでそれを開いてみると...

![ece3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1061021/c3546335-5edd-f54f-f12f-328837f7411e.png)

数値も文字列になっちゃてるし、セルの大きさも違う。
でも書き込まれたは書き込まれたからいいか。

---

まだ、
・セルの高さと幅
・数値と文字列
という問題は残っているが、今回はここまで！
もしかしたら更新するかも！