妳這裏存在壹個誤區,只靠xlrd和xlwt不能直接實現對已經存在Excel進行數據插入,原因如下:
1、使用xlrd的xlrd.open_workbook()方法打開文件返回的是壹個只讀對象,只能讀Excel內容,不能向Excel寫入數據;
2、使用xlwt的xlwt.Workbook()方法是創建壹個空的Excel對象,然後向裏面寫入;
所以讀取和創建Excel都可以直接實現,但是修改已經存在的Excel需要借助xlutils,它的作用是在xlrd類型的workbook和xlwt類型的workbook之間建立了壹個管道,利用xlutils的copy方法將只讀對象變成可寫對象,簡單代碼實現如下:
import?xlrdfrom?xlutils.copy?import?copy
readOnlyWorkbook?=?xlrd.open_workbook('TestFile.xls')
readOnlySheet=?readOnlyWorkbook.sheet_by_index(0)?#?通過sheet_by_index()獲取的sheet沒有write()方法
writableWorkbook=?copy(readOnlyWorkbook)?#?利用xlutils.copy函數,將xlrd.Book轉為xlwt.Workbook
writableSheet?=?writableWorkbook.get_sheet(0)?#?通過get_sheet()獲取的sheet有write()方法
writableSheet.write(3,?3,?'insertData')?#?寫入3,3這個單元格
writableWorkbook.save('TestFile.xls')?#?保存文件
妳自己增加代碼判斷原Excel某個單元格是否有數據,完善妳的代碼,避免插入時覆蓋了,運行後Excel情況見截圖
上述方法我寫的是不能“直接”實現已有Excel的數據插入或修改,但是可以間接的來
使用xlrd讀原有Excel
使用xlwt創建壹個新文件並把1中讀取的內容寫入
再插入需要增加的數據,保存
刪掉原Excel,把新創建的Excel改成原Excel的名字
這種方法妳就自己玩,因為原來Excel可能有格式啊,公式啊什麽的,新創建就會很麻煩