问题:使用C#程序读取excel文件,包括后缀为.xls和.xlsx
相信很多朋友都有在程序中读取excel文件的需求,我在调研的过程中也看了很多文章,基本思路都是正确的,但是有一些代码是没有通过验证的,在实际操作的过程中总会遇到一些问题,经过摸索,最终总结出一套可行的方案,在这里跟大家分享。
读取Excel的方法有多种,我这里选择了一种效率较高的方法,将读取出来的数据存放到一个DataSet之中。
代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.OleDb; using System.Data; namespace ConvertEXCEL2DLL { //实现读取Excel文件的功能 class ReadExcel { private static String strCon1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="; private static String strCon2 = ";Extended Properties='Excel 8.0;HDR=No;IMEX=1;'"; public static String m_filePathExcel = "c:\\test.xls"; /*从excel中读取数据*/ public static DataSet ImportExcelToDataSet() { OleDbConnection conn = new OleDbConnection(strCon1 + m_filePathExcel + strCon2); try { conn.Open(); } catch (InvalidOperationException ie) { Console.Write("连接重复打开。\n"); } catch (OleDbException oe) { Console.Write("在打开连接时出现连接级别的错误。\n"); } OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT *FROM [Sheet1$]", conn); DataSet myDataSet = new DataSet(); try { myCommand.Fill(myDataSet); Console.WriteLine("Read OK "); } catch (Exception ex) { Console.Write("formation error"); } return myDataSet; } } }注意:其实这里需要强调的只有一点,那就是strCon1 StrCon2和 m_filePathExcel的格式,要注意这里面的空格不能少,单引号不能少,m_filePathExcel中的\要转义为\\。
HDR = Yes的含义是Excel表中第一行为表头,不需要读出,如果需要则改为No。其他的含义都可以在网上查到。