是否有免费或开源的库可以直接从c#程序中读取Excel文件(.xls) ?
它不需要太花哨,只需选择一个工作表并将数据作为字符串读取即可。到目前为止,我一直在使用Excel的Export to Unicode文本功能,并解析生成的(以制表符分隔的)文件,但我想消除手动步骤。
是否有免费或开源的库可以直接从c#程序中读取Excel文件(.xls) ?
它不需要太花哨,只需选择一个工作表并将数据作为字符串读取即可。到目前为止,我一直在使用Excel的Export to Unicode文本功能,并解析生成的(以制表符分隔的)文件,但我想消除手动步骤。
当前回答
如果在同一个工作表中有多个表,可以给每个表一个对象名称,并使用OleDb方法读取表,如下所示:http://vbktech.wordpress.com/2011/05/10/c-net-reading-and-writing-to-multiple-tables-in-the-same-microsoft-excel-worksheet/
其他回答
最近,部分是为了更好地使用LINQ....我一直在使用Excel的自动化API将文件保存为XML电子表格,然后使用LINQ将该文件处理为XML。
我想展示一个用. net读取xls/xlsx文件的简单方法。希望以下内容对您有所帮助。
private DataTable ReadExcelToTable(string path) { //Connection String string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; //the same name //string connstring = Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + path + //";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; using(OleDbConnection conn = new OleDbConnection(connstring)) { conn.Open(); //Get All Sheets Name DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"Table"}); //Get the First Sheet Name string firstSheetName = sheetsName.Rows[0][2].ToString(); //Query String string sql = string.Format("SELECT * FROM [{0}]",firstSheetName); OleDbDataAdapter ada =new OleDbDataAdapter(sql,connstring); DataSet set = new DataSet(); ada.Fill(set); return set.Tables[0]; } }
代码来自文章:http://www.c-sharpcorner.com/uploadfile/d2dcfc/read-excel-file-with-net/。你可以从中获得更多细节。
刚刚做了一个需要管理一些excel文件的快速演示项目。GemBox软件的. net组件足以满足我的需求。它有一个免费版本,但有一些限制。
http://www.gemboxsoftware.com/GBSpreadsheet.htm
不久前,我在c#中从Excel文件中读取了大量数据,我们使用了两种方法:
COM API,在这里您可以直接访问Excel的对象并通过方法和属性操作它们 允许像使用数据库一样使用Excel的ODBC驱动程序。
后一种方法要快得多:通过COM读取一个有20列和200行的大表需要30秒,通过ODBC只需半秒。所以,如果你需要的只是数据,我建议使用数据库方法。
欢呼,
Carl
我们使用的解决方案需要:
允许读取/写入Excel生成的文件 性能要快(不像使用com那样) 独立于MS Office(需要在客户端没有安装MS Office的情况下也能使用) 免费或开源(但要积极开发)
有几种选择,但我们发现NPoi(。NET端口的Java长期存在的Poi开源项目)是最好的: http://npoi.codeplex.com/
它还允许使用.doc和.ppt文件格式