zoukankan      html  css  js  c++  java
  • .Net读取xlsx文件Excel2007

    01 .NET 读取Excel 2007的xlsx文件和读取老的.xls文件是一样的,都是用Oledb读取,仅仅连接字符串不同而已。
    02 读取xlsx 用的是Microsoft.Ace.OleDb.12.0;
    03 具体操作方法如下:
    04 public static DataTable GetExcelToDataTableBySheet(string FileFullPath, string SheetName)
    05 {
    06 //string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; //此连接只能操作Excel2007之前(.xls)文件
    07 string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'"; //此连接可以操作.xls与.xlsx文件
    08 OleDbConnection conn = new OleDbConnection(strConn);
    09 conn.Open();
    10 DataSet ds = new DataSet();
    11 OleDbDataAdapter odda = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", SheetName), conn); //("select * from [Sheet1$]", conn);
    12 odda.Fill(ds, SheetName);
    13 conn.Close();
    14 return ds.Tables[0];
    15  
    16 }
    17  
    18  
    19 读取Excel文件时,可能一个文件中会有多个Sheet,因此获取Sheet的名称是非常有用的。
    20  
    21 具体操作方法如下:
    22  
    23 //根据Excel物理路径获取Excel文件中所有表名
    24  
    25 public static String[] GetExcelSheetNames(string excelFile)
    26 {
    27 OleDbConnection objConn = null;
    28 System.Data.DataTable dt = null;
    29  
    30 try
    31 {
    32 //string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + excelFile + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; //此连接只能操作Excel2007之前(.xls)文件
    33  
    34 string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + excelFile + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'"; //此连接可以操作.xls与.xlsx文件
    35 objConn = new OleDbConnection(strConn);
    36 objConn.Open();
    37 dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    38 if (dt == null)
    39 {
    40 return null;
    41 }
    42 String[] excelSheets = new String[dt.Rows.Count];
    43 int i = 0;
    44 foreach (DataRow row in dt.Rows)
    45 {
    46 excelSheets[i] = row["TABLE_NAME"].ToString();
    47 i++;
    48 }
    49  
    50 return excelSheets;
    51 }
    52 catch
    53 {
    54 return null;
    55 }
    56 finally
    57 {
    58 if (objConn != null)
    59 {
    60 objConn.Close();
    61 objConn.Dispose();
    62 }
    63 if (dt != null)
    64 {
    65 dt.Dispose();
    66 }
    67 }
    68 }

    非常简单就可以读取到文件内容了,.NET就是强大。
    命名空间:using System.IO;
    返回路径:StreamReader sr = new StreamReader(@"路径", System.Text.Encoding.GetEncoding("GB18030")); //[设置中文编码]
    读取文件:textBox1.Text = sr.ReadToEnd();
    关闭流:sr.Close();

    另://HDR=Yes; 第一行是否是标题。 IMEX=1; 处理空行问题

  • 相关阅读:
    jvm003-运行时数据区及程序计数器
    jvm002-类加载子系统
    jvm001-JVM与Java体系结构
    (四十三)常用 10 种算法——马踏棋盘算法
    (四十二)常用 10 种算法——弗洛伊德算法
    node 环境配置
    cordova platform add android报错问题处理
    WPF代码引用Resouces中的图片
    WPF中利用WebClient向服务器上传文件
    未能加载文件或程序集“COM.Excel”或它的某一个依赖项
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/2072995.html
Copyright © 2011-2022 走看看