如果是把 Excel 作為超小型數據庫,我有示例代碼: 因為一些同事完全不懂數據庫,但是會用基本的 Excel 文件。 程序調用 win32com 修改Excel中的記錄字段標記。用作最基本的數據庫。 下面的代碼演示了讀取、修改Excel文件中[Sheet1]表中的記錄。表包含"號碼"、"狀態"兩個中文字段。用來記錄手機號碼的狀態的。 注意表名一定要用[]方括號括起來。 code: #!/usr/bin/python # -*- coding: gbk -*- import os.path import win32com.client import string class ExcelNumList: def __init__(self, filename = None): self.conn = win32com.client.Dispatch(r'ADODB.Connection') self.opened = False return None def open(self, filename): del self.conn self.conn = win32com.client.Dispatch(r'ADODB.Connection') self.opened = False # print dsn if os.path.exists(filename): dsn = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;' \ 'Extended Properties=Excel 8.0;' \ 'Persist Security Info=False;' \ 'Data Source=%s;'%filename #print dsn try: self.conn.Open(dsn) self.opened = True except: self.opened = False else: return None def close(self): if self.opened: try: self.conn.Close() except: pass #self.conn = None def getNumList(self): list = [] rs = win32com.client.Dispatch(r'ADODB.Recordset') try: rs.Open('SELECT * FROM [Sheet1$] WHERE 狀態 IS NULL', self.conn, 1, 3) except: return False while not rs.EOF: num = "%s"%int(rs.Fields["號碼"].Value) list.append(num) rs.MoveNext() rs.Close() del rs return list def updateNum(self, number, status=0): sql = "UPDATE [Sheet1$] SET 狀態=%s WHERE 號碼=%s"%(status, number) self.conn.Execute(sql)