01 |
.NET 读取Excel 2007的xlsx文件和读取老的.xls文件是一样的,都是用Oledb读取,仅仅连接字符串不同而已。 |
02 |
读取xlsx 用的是Microsoft.Ace.OleDb.12.0; |
04 |
public static DataTable GetExcelToDataTableBySheet( string FileFullPath, string SheetName) |
07 |
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'" ; |
08 |
OleDbConnection conn = new OleDbConnection(strConn); |
10 |
DataSet ds = new DataSet(); |
11 |
OleDbDataAdapter odda = new OleDbDataAdapter( string .Format( "SELECT * FROM [{0}]" , SheetName), conn); |
12 |
odda.Fill(ds, SheetName); |
19 |
读取Excel文件时,可能一个文件中会有多个Sheet,因此获取Sheet的名称是非常有用的。 |
25 |
public static String[] GetExcelSheetNames( string excelFile) |
27 |
OleDbConnection objConn = null ; |
28 |
System.Data.DataTable dt = null ; |
34 |
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + excelFile + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'" ; |
35 |
objConn = new OleDbConnection(strConn); |
37 |
dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null ); |
42 |
String[] excelSheets = new String[dt.Rows.Count]; |
44 |
foreach (DataRow row in dt.Rows) |
46 |
excelSheets[i] = row[ "TABLE_NAME" ].ToString(); |
非常简单就可以读取到文件内容了,.NET就是强大。
命名空间:using System.IO;
返回路径:StreamReader sr = new StreamReader(@"路径", System.Text.Encoding.GetEncoding("GB18030")); //[设置中文编码]
读取文件:textBox1.Text = sr.ReadToEnd();
关闭流:sr.Close();
另://HDR=Yes; 第一行是否是标题。 IMEX=1; 处理空行问题