Python中Excel各種操作與常見問題

文章簡單的介紹了關于Python中Excel各種操作與常見問題,有需要的朋友可以參考一下。

模塊介紹:


xlrd 0.7.5 下載地址:http://pypi.python.org/pypi/xlrd 文檔地址:https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html

xlwt 0.7.3 下載地址:http://pypi.python.org/pypi/xlwt 文檔地址:https://secure.simplistix.co.uk/svn/xlwt/trunk/xlwt/doc/xlwt.html

模塊安裝:


分別將tar.gz文件包解壓,在cmd命令行窗口,進入到xlrd或xlwt,運行python setup.py install。前提是系統變量Path中已添加C:Python26。
現進入Python解釋器,import xlwt,正常無報錯。import xlrd,卻

代碼如下
>>> import xlrd
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:Python26Libsite-packagesxlrd__init__.py", line 4, in <module>
__VERSION__ = open(path.join(path.dirname(__file__), 'version.txt')).read().
strip()
IOError: [Errno 2] No such file or directory: 'C:\Python26\lib\site-packages
xlrd\version.txt'

很明顯,是文件version.txt不存在所致。打開"C:Python26Libsite-packagesxlrd__init__.py"文件,將第四行的__VERSION__ = open(path.join(path.dirname(__file__), 'version.txt')).read().strip()注釋掉,新增一行爲__VERSION__ = '0.7.4',現在import xlrd,就正常無報錯。

源代碼中的第四行是讀取版本號,而該模塊版本號在第16行進行了描述,參照C:Python26Libsite-packagesxlwt__init__.py文件,即可解決此問題

一 讀取excel

這裏介紹一個不錯的包xlrs,可以工作在任何平台。這也就意味著你可以在Linux下讀取Excel文件。

首先,打開workbook;

代碼如下
import xlrd
wb = xlrd.open_workbook('myworkbook.xls')

檢查表單名字:

代碼如下
wb.sheet_names()

得到第一張表單,兩種方式:索引和名字

代碼如下
sh = wb.sheet_by_index(0)
sh = wb.sheet_by_name(u'Sheet1')

遞歸列印出每行的信息:

代碼如下
for rownum in range(sh.nrows):
print sh.row_values(rownum)

如果只想返回第一列數據:

代碼如下
first_column = sh.col_values(0)

通過索引讀取數據:

代碼如下
cell_A1 = sh.cell(0,0).value
cell_C4 = sh.cell(rowx=3,colx=2).value

注意:這裏的索引都是從0開始的。

二 寫excel


這裏介紹一個不錯的包xlwt,可以工作在任何平台。這也就意味著你可以在Linux下保存Excel文件。

基本部分

在寫入Excel表格之前,你必須初始化workbook對象,然後添加一個workbook對象。比如:

代碼如下
import xlwt
wbk = xlwt.Workbook()
sheet = wbk.add_sheet('sheet 1')

這樣表單就被創建了,寫入數據也很簡單:

代碼如下
# indexing is zero based, row then column
sheet.write(0,1,'test text')

之後,就可以保存文件(這裏不需要想打開文件一樣需要close文件):
wbk.save('test.xls')

深入探索

worksheet對象,當你更改表單內容的時候,會有警告提示。

代碼如下
sheet.write(0,0,'test')
sheet.write(0,0,'oops')

# returns error:
# Exception: Attempt to overwrite cell:
# sheetname=u'sheet 1' rowx=0 colx=0

解決方式:使用cell_overwrite_ok=True來創建worksheet:

代碼如下
sheet2 = wbk.add_sheet('sheet 2', cell_overwrite_ok=True)
sheet2.write(0,0,'some text')
sheet2.write(0,0,'this should overwrite')
更多相關文章
  • PHP中連接SQLServer2005代碼與常見問題
    本文章介紹了 PHP中連接SQLServer2005代碼與常見問題,大家可參考.連接前配置
  • windows 8.1 update 更新了不少的東西了,下面我來總結一下Windows 8.1 Update新功能與Update (KB2919355)常見問題答,希望對各位有幫助.Windows 8.1 Update新特性1. 當打開一個modern app時,任務欄還會顯示嗎?答:當moder
  • Yoga平板電腦是聯想推薦的一款娛樂平板電腦了,此款平板使用的操作系統:Android4.2了,下面本文章整理了對于剛入手Yoga平板的一些常見問題與解決方案.Yoga平板是否可以與投影儀連接因爲Yoga平板B600
  • 現在浏覽器越來越多了,兼容性也特別複雜,下面我收藏了css與javascript中浏覽器兼容常見問題總結,有需要的朋友可參考一下.突然間,在Chrome下看起來很整齊的布局,在IE下變成一團糟.爲了找出原因,我改動了div的background-color屬性.最後,發現同一個DIV的寬度在IE和C ...
  • iphone手機升級iOS 9後遇到的常見問題介紹
    iphone手機升級iOS 9後遇到的常見問題估計有很多了,今天我們一起來看小編整理的一篇
  • 這些給大家介紹在使用Sencha ExtJS碰到一些問題總結,包括有form 表單提交失敗,ExtJS 限制text最大字符數, Ajax 提交SESSION失效的問題等等問題.最近一直在使用Sencha進行前端開發
  • 騰達(Tenda)路由器P1000常見問題解答整理了大量在使用p1000路由器時碰到的問題與解決方法,希望例子能給各位朋友帶來一些幫助哦.本文檔提供一些常見問題及解決方法,閱讀它能幫助您解決一些遇到的難題.如果您不能
  • ajaxValidator 常見問題解決(傳參,中文亂碼)以下是作者對ajaxValidator的聲明:ajaxvalidator是大家問的最多的問題,修正一個bug(感謝網友“じ??w√”),並把大家最關心的問題,再做一次闡述.bug現象:無論校驗有沒有校驗通過,當控件再次得到焦點而再次失去焦點的 ...
一周排行
  • 本文章分享一篇關于如何利用array_map() 調用 mysql_real_escape_string 清理數組,有需要學習的朋友可以參考一下本文章.用 array_map() 調用 mysql_real_esca
  • 這裏主要是rsort krsort函數,他是對鍵名進行反序排序了,如果要數組元素值排序用sort就成了,array_multisort這個是對多維數組排序.*/$array = array(array('www.11
  • 本文章詳細的介紹了關于php header中Content-disposition用法詳細,有需要了解header用法的朋友可參考一下.Content-disposition 是 MIME 協定的擴展,MIME 協定
  • 本文章給大家介紹Python裝飾器decorator的簡單示例應用,希望文章對大家會有所幫助.1,閉包(closure)閉包是Python所支持的一種特性,它讓在非global scope定義的函數可以引用其外圍空間 ...
  • 數 format 是轉換的格式,以百分比符號 ("%") 開始到轉換字符結束.下面的可能的 format 值:%% - 返回百分比符號 %b - 二進制數 %c - 依照 ascii 值的字符 % ...
  • autoload在php中其實是一個魔術方法了,我們可以指定類目錄及規則可以自動載入類文件從而可以省去我們使用include來載入文件了,下面一直來看看關于autoload方法一些例子.我們在寫web應用程序時通常對
  • Python 爬蟲App版Json解析的例子
    前面介紹過一篇web版本的爬蟲python代碼,現在我們知道app非常的流行了,下面來看一 ...
  • 小編一般很少使用htaccess了,因爲一台伺服器一個網站所以都會直接在apache中配置像URL重寫(Rewrite)與301重定向(Redirect)了,但如果各位站長有多個站可以開啓在站點根目錄配置了,這個我們 ...
  • public class hashalgorithm{ public static long hash(byte[] digest, int ntime) { long rv = ((long)(digest[3 + ...
  • 如果我們沒有條件實現cdn或其它的分布式數據處理的話我們可以嘗試使用Nginx的緩存功能來實現網站緩存加速,支持html僞靜態頁面,具體的配置我們一起來看看.一.代理模式代理模式,即在使用 Nginx 反向代理時緩存 ...