Maison > Questions et réponses > le corps du texte
openpyxl文档里面有介绍把数据写入单个单元格,和逐行写入数据。但是没有介绍怎么批量把数据写入指定的行或列。想请大神指点一下。
比如我想在第二行这里批量写入10行新的数据(格式和原表格一样),原有的数据往后面排,或者D列写入一列数据。
伊谢尔伦2017-04-18 10:30:17
Pandas lit dans le dataframe, puis modifie le dataframe et l'écrit dans Excel. Le code est le plus simple
.PHPz2017-04-18 10:30:17
La méthode ci-dessus est plutôt bonne, mais l'installation de pandas est plus compliquée, et elle n'est peut-être pas facile à gérer pour les débutants. J'ai une méthode stupide
.from win32com.client import Dispatch
import win32com.client
class MyExcel:
def __init__(self, filename=None): # 打开文件或者新建文件(如果不存在的话)
self.xlApp = win32com.client.Dispatch('Excel.Application')
if filename:
self.filename = filename
self.xlBook = self.xlApp.Workbooks.Open(filename)
else:
self.xlBook = self.xlApp.Workbooks.Add()
self.filename = ''
def save(self, newfilename=None): # 保存文件
if newfilename:
self.filename = newfilename
self.xlBook.SaveAs(newfilename)
else:
self.xlBook.Save()
def close(self): # 关闭文件
self.xlBook.Close(SaveChanges=0)
del self.xlApp
def inserRow(self, sheetname, row):
sht = self.xlBook.Worksheets(sheetname)
sht.Rows(row).Insert()
if __name__ == "__main__":
xls = MyExcel(r'd:\jason.li\Desktop\empty_book.xlsx')
xls.inserRow('sheet1',6)
xls.save()
xls.close()
Si vous trouvez cela gênant, vous pouvez utiliser l'héritage et remplacer les méthodes de classe. Je vais donner une petite idée d'implémentation. L'efficacité est relativement faible. Vous pouvez également modifier le code pour insérer plusieurs lignes à la fois. Il est très pratique d'utiliser win32com pour faire fonctionner Excel.