2010-10-08 60 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
而还有很多!!!