2010-10-08 57 views
1

我正在尋找一種方式來閱讀(寫入會很好 - 雖然不是關鍵)一個Excel文件。 我的意思是97-2003格式,因爲MS爲2007格式提供了OO XML工具包,我聽說這個工具包很好。如何可靠地從Excel文件讀取數據?

我所做到目前爲止只是使用其中有許多問題和缺點,它相信:)

我知道有很多免費的圖書館甚至硬OLEDB(微軟Jet)中(即在Codeplex上),但他們使用OldeDb(所以他們遭受同樣的問題)。
我發現的唯一一個,但還沒有嘗試過,是http://exceldatareader.codeplex.com/這顯然是二進制讀取的Excel文件。

我很樂意聽取您對您使用或閱讀過的圖書館的推薦和推薦。

編輯:對不起,如果它不明顯,但我的意思是.NET庫。

+0

您想要讀取(也可以寫入)Excel的任何特定的語言風格?你沒有指定,雖然你引用的例子是.Net庫。我問作爲這些免費庫之一(在Codeplex上)的開發者,您的memntion ...不使用OleDb。 – 2010-10-08 18:51:35

+0

C#,VB.NET,但也會編譯爲MSIL :)你正在開發Excel數據讀取器? – 2010-10-10 15:50:21

+0

不是......我是PHPExcel的開發者,PHPExcel是一個純粹的PHP讀寫器/寫一系列工作簿格式,包括兩種Excel的關鍵風格,所以如果您使用.Net解決方案後可能不太感興趣。 – 2010-10-11 08:20:12

回答

1

您是否有特定的語言偏好?
如果您對Python感到滿意,我會衷心推薦xlrd

它沒有比下面的代碼示例容易得多;
將通過一個工作簿的表搜索一個特定的模式:

import re, xlrd 

def re_search(fname, query): 
    ''' iterate through sheets of workbook searching for `query` ''' 
    book = xlrd.open_workbook(fname) 
    for sheet in book.sheets(): 
     for rowx in xrange(sheet.nrows): 
      for colx in xrange(sheet.ncols): 
       cell = sheet.cell(rowx, colx) 
       if cell.ctype == xlrd.XL_CELL_TEXT and query.search(cell.value): 
        yield cell.value 

if __name__ == '__main__': 
    my_pattern = re.compile('[A-Z]{3} (.*)') 

    for matched_re in xlresearch('my_xl_file.xls', my_pattern): 
     print matched_re 
+0

是否有機會與IronPython合作? – 2010-10-10 15:47:11

+1

xlrd作者John Machin發佈了IronPython的說明:http://groups.google.com.au/group/python-excel/browse_thread/thread/8bb393c963e8eff5/8ba724cb5720eb43讓我們知道它是怎麼回事!祝你好運。 – bernie 2010-10-10 15:55:31

2

我不知道你的約束是什麼,但如果我是你(這是經驗之談,相信我),我會避免閱讀除Excel以外的Excel文件。我的建議是,保持簡單並堅持CSV。大多數庫(包括xlrd)僅支持Excel的基本功能(對不起,沒有圖表或數據透視表),CSV也是如此。

+0

我無法使用Excel,因爲這應該與ASP.NET和服務器端一起工作,Excel既不推薦也不支持Microsoft自動化。我認爲CSV是一種解決方案,但它意味着增加額外的工作給我的用戶,這不是重點:) – 2010-10-10 15:45:31

+1

我已經有更多的麻煩,導入CSV到SQL Server(2005年)。 Excel正確地解釋SQL Server錯過的列。 – Dave 2013-04-17 20:49:15

0

我不知道你的情況,但是如果你在機器上安裝了一個excel,你可以通過OLE接口使用它。

1

使用SSIS?如何使用Integration Services將Excel文件導入到SQL Server 2005中http://www.techrepublic.com/blog/datacenter/how-to-import-an-excel-file-into-sql-server-2005-using-integration-services/205
開放源代碼? EPPPlus在服務器上創建高級Excel 2007/2010電子表格http://epplus.codeplex.com/
C#?如何從Excel的一列數據導入使用C#How to import data from one column of Excel to listbox using C#
鏈接服務器到列表框:如何與SQL Server使用Excel鏈接服務器和分佈式查詢http://support.microsoft.com/kb/306397
使用C#的DataTable和SQL服務器的OpenXML功能數據的批量插入http://www.codeproject.com/Articles/32581/Import-Data-from-Excel-to-SQL-Server
而還有很多!!!