当前位置:Gxlcms > Python > Python实现的Excel文件读写类

Python实现的Excel文件读写类

时间:2021-07-01 10:21:17 帮助过:76人阅读

本文实例讲述了Python实现的Excel文件读写类。分享给大家供大家参考。具体如下:

  1. #coding=utf-8
  2. #######################################################
  3. #filename:ExcelRW.py
  4. #author:defias
  5. #date:2015-4-27
  6. #function:read or write excel file
  7. #######################################################
  8. import xlrd
  9. import xlwt
  10. import xlutils.copy
  11. import os.path
  12. class XlsEngine():
  13. """
  14. The XlsEngine is a class for excel operation
  15. Usage:
  16. xlseng = XlsEngine('filePath')
  17. """
  18. def __init__(self,xlsname):
  19. """
  20. define class variable
  21. """
  22. self.xls_name = xlsname #file name
  23. self.xlrd_object = None #workbook object
  24. self.isopentrue = False #file open flag
  25. def open(self):
  26. """
  27. open a xls file
  28. Usage:
  29. xlseng.open()
  30. """
  31. try:
  32. self.xlrd_object = xlrd.open_workbook(self.xls_name)
  33. self.isopentrue = True
  34. print('[%s,%s].'%(self.isopentrue,self.xlrd_object))
  35. except:
  36. self.isopentrue = False
  37. self.xlrd_object = None
  38. print('open %s failed.'%self.xls_name)
  39. def info(self):
  40. """
  41. show xls file information
  42. Usage:
  43. xlseng.info()
  44. """
  45. if self.isopentrue == True:
  46. for sheetname in self.xlrd_object.sheet_names():
  47. worksheet = self.xlrd_object.sheet_by_name(sheetname)
  48. print('%s:(%d row,%d col).'%(sheetname,worksheet.nrows,worksheet.ncols))
  49. else:
  50. print('file %s is not open.'%self.xls_name)
  51. def readcell(self,sheetname='sheet1',rown=0,coln=0):
  52. """
  53. read file's a cell content
  54. Usage:
  55. xlseng.readcell('sheetname',rown,coln)
  56. """
  57. try:
  58. if self.isopentrue == True:
  59. worksheets = self.xlrd_object.sheet_names()
  60. if sheetname not in worksheets:
  61. print('%s is not exit.'%sheetname)
  62. return False
  63. worksheet = self.xlrd_object.sheet_by_name(sheetname)
  64. cell = worksheet.cell_value(rown,coln)
  65. print('[file:%s,sheet:%s,row:%s,col:%s]:%s.'%(self.xls_name,sheetname,rown,coln,cell))
  66. else:
  67. print('file %s is not open.'%self.xls_name)
  68. except:
  69. print('readcell is false! please check sheetn rown and coln is right.')
  70. def readrow(self,sheetname='sheet1',rown=0):
  71. """
  72. read file's a row content
  73. Usage:
  74. xlseng.readrow('sheetname',rown)
  75. """
  76. try:
  77. if self.isopentrue == True:
  78. worksheets = self.xlrd_object.sheet_names()
  79. if sheetname not in worksheets:
  80. print('%s is not exit.'%sheetname)
  81. return False
  82. worksheet = self.xlrd_object.sheet_by_name(sheetname)
  83. row = worksheet.row_values(rown)
  84. print('[file:%s,sheet:%s,row:%s]:%s.'%(self.xls_name,sheetname,rown,row))
  85. else:
  86. print('file %s is not open.'%self.xls_name)
  87. except:
  88. print('readrow is false! please check sheetn rown is right.')
  89. def readcol(self,sheetname='sheet1',coln=0):
  90. """
  91. read file's a col content
  92. Usage:
  93. xlseng.readcol('sheetname',coln)
  94. """
  95. try:
  96. if self.isopentrue == True:
  97. worksheets = self.xlrd_object.sheet_names()
  98. if sheetname not in worksheets:
  99. print('%s is not exit.'%sheetname)
  100. return False
  101. worksheet = self.xlrd_object.sheet_by_name(sheetname)
  102. col = worksheet.col_values(coln)
  103. print('[file:%s,sheet:%s,col:%s]:%s.'%(self.xls_name,sheetname,coln,col))
  104. else:
  105. print('file %s is not open.'%self.xls_name)
  106. except:
  107. print('readcol is false! please check sheetn coln is right.')
  108. def writecell(self,value='',sheetn=0,rown=0,coln=0):
  109. """
  110. write a cell to file,other cell is not change
  111. Usage:
  112. xlseng.writecell('str',sheetn,rown,coln)
  113. """
  114. try:
  115. if self.isopentrue == True:
  116. xlrd_objectc = xlutils.copy.copy(self.xlrd_object)
  117. worksheet = xlrd_objectc.get_sheet(sheetn)
  118. worksheet.write(rown,coln,value)
  119. xlrd_objectc.save(self.xls_name)
  120. print('writecell value:%s to [sheet:%s,row:%s,col:%s] is ture.'%(value,sheetn,rown,coln))
  121. else:
  122. print('file %s is not open.'%self.xls_name)
  123. except:
  124. print('writecell is false! please check.')
  125. def writerow(self,values='',sheetn=0,rown=0,coln=0):
  126. """
  127. write a row to file,other row and cell is not change
  128. Usage:
  129. xlseng.writerow('str1,str2,str3...strn',sheetn,rown.coln)
  130. """
  131. try:
  132. if self.isopentrue == True:
  133. xlrd_objectc = xlutils.copy.copy(self.xlrd_object)
  134. worksheet = xlrd_objectc.get_sheet(sheetn)
  135. values = values.split(',')
  136. for value in values:
  137. worksheet.write(rown,coln,value)
  138. coln += 1
  139. xlrd_objectc.save(self.xls_name)
  140. print('writerow values:%s to [sheet:%s,row:%s,col:%s] is ture.'%(values,sheetn,rown,coln))
  141. else:
  142. print('file %s is not open.'%self.xls_name)
  143. except:
  144. print('writerow is false! please check.')
  145. def writecol(self,values='',sheetn=0,rown=0,coln=0):
  146. """
  147. write a col to file,other col and cell is not change
  148. Usage:
  149. xlseng.writecol('str1,str2,str3...',sheetn,rown.coln)
  150. """
  151. try:
  152. if self.isopentrue == True:
  153. xlrd_objectc = xlutils.copy.copy(self.xlrd_object)
  154. worksheet = xlrd_objectc.get_sheet(sheetn)
  155. values = values.split(',')
  156. for value in values:
  157. worksheet.write(rown,coln,value)
  158. rown += 1
  159. xlrd_objectc.save(self.xls_name)
  160. print('writecol values:%s to [sheet:%s,row:%s,col:%s] is ture.'%(values,sheetn,rown,coln))
  161. else:
  162. print('file %s is not open.'%self.xls_name)
  163. except:
  164. print('writecol is false! please check.')
  165. def filecreate(self,sheetnames='sheet1'):
  166. """
  167. create a empty xlsfile
  168. Usage:
  169. filecreate('sheetname1,sheetname2...')
  170. """
  171. try:
  172. if os.path.isfile(self.xls_name):
  173. print('%s is exit.'%self.xls_name)
  174. return False
  175. workbook = xlwt.Workbook()
  176. sheetnames = sheetnames.split(',')
  177. for sheetname in sheetnames:
  178. workbook.add_sheet(sheetname,cell_overwrite_ok=True)
  179. workbook.save(self.xls_name)
  180. print('%s is created.'%self.xls_name)
  181. except:
  182. print('filerator is false! please check.')
  183. def addsheet(self,sheetnames='sheet1'):
  184. """
  185. add sheets to a exit xlsfile
  186. Usage:
  187. addsheet('sheetname1,sheetname2...')
  188. """
  189. try:
  190. if self.isopentrue == True:
  191. worksheets = self.xlrd_object.sheet_names()
  192. xlrd_objectc = xlutils.copy.copy(self.xlrd_object)
  193. sheetnames = sheetnames.split(',')
  194. for sheetname in sheetnames:
  195. if sheetname in worksheets:
  196. print('%s is exit.'%sheetname)
  197. return False
  198. for sheetname in sheetnames:
  199. xlrd_objectc.add_sheet(sheetname,cell_overwrite_ok=True)
  200. xlrd_objectc.save(self.xls_name)
  201. print('addsheet is ture.')
  202. else:
  203. print("file %s is not open \n"%self.xls_name)
  204. except:
  205. print('addsheet is false! please check.')
  206. """
  207. def chgsheet(self,sheetn,values):
  208. def clear(self):
  209. """
  210. if __name__ == '__main__':
  211. #初始化对象
  212. xlseng = XlsEngine('E:\\Code\\Python\\test2.xls')
  213. #新建文件,可以指定要新建的sheet页面名称,默认值新建sheet1
  214. #print("\nxlseng.filecreate():")
  215. #xlseng.filecreate('newesheet1,newesheet2,newesheet3')
  216. #打开文件
  217. print("xlseng.open():")
  218. xlseng.open()
  219. #添加sheet页
  220. print("\nxlseng.addsheet():")
  221. xlseng.addsheet('addsheet1,addsheet2,addsheet3')
  222. #
输出文件信息 print("\nxlseng.info():") xlseng.info() #读取sheet1页第3行第3列单元格数据(默认读取sheet1页第1行第1列单元格数据) print("\nxlseng.readcell():") xlseng.readcell('sheet1',2,2) #读取sheet1页第2行的数据(默认读取sheet1页第1行的数据) print("\nxlseng.readrow():") xlseng.readrow('sheet1',1) #读取sheet1页第3列的数据(默认读取sheet1页第1列的数据) print("\nxlseng.readcol():") xlseng.readcol('sheet1',2) #向第一个sheet页的第2行第4列写字符串数据‘I am writecell writed'(默认向第一个sheet页的第1行第1列写空字符串) print("\nxlseng.writecell():") xlseng.writecell('I am writecell writed',0,1,3) #向第一个sheet页写一行数据,各列的值为‘rowstr1,rowstr2,rowstr3',从第3行第4列开始写入(默认向第一个sheet页写一行数据,值为‘',从第1行第1列开始写入) print("\nxlseng.writerow():") xlseng.writerow('rowstr1,rowstr2,rowstr3',0,2,3) #向第一个sheet页写一列数据,各行的值为‘colstr1,colstr2,colstr3,colstr4',从第4行第4列开始写入(默认向第一个sheet页写一列数据,值为‘',从第1行第1列开始写入) print("\nxlseng.writecol():") xlseng.writecol('colstr1,colstr2,colstr3,colstr4',0,3,3)

希望本文所述对大家的Python程序设计有所帮助。

人气教程排行