asp.net 讀取Excel資料到DataTable的程式碼

NO IMAGE

複製程式碼 程式碼如下:
/// <summary>
/// 獲取指定路徑、指定工作簿名稱的Excel資料:取第一個sheet的資料
/// </summary>
/// <param name=”FilePath”>檔案儲存路徑</param>
/// <param name=”WorkSheetName”>工作簿名稱</param>
/// <returns>如果爭取找到了資料會返回一個完整的Table,否則返回異常</returns>
public DataTable GetExcelData(string astrFileName)
{
string strSheetName = GetExcelWorkSheets(astrFileName)[0].ToString();
return GetExcelData(astrFileName, strSheetName);
}

程式碼
複製程式碼 程式碼如下:
/// <summary>
/// 返回指定檔案所包含的工作簿列表;如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否則返回空
/// </summary>
/// <param name=”strFilePath”>要獲取的Excel</param>
/// <returns>如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否則返回空</returns>
public ArrayList GetExcelWorkSheets(string strFilePath)
{
ArrayList alTables = new ArrayList();
OleDbConnection odn = new OleDbConnection(GetExcelConnection(strFilePath));
odn.Open();
DataTable dt = new DataTable();
dt = odn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
throw new Exception(“無法獲取指定Excel的架構。”);
}
foreach (DataRow dr in dt.Rows)
{
string tempName = dr[“Table_Name”].ToString();
int iDolarIndex = tempName.IndexOf(‘$’);
if (iDolarIndex > 0)
{
tempName = tempName.Substring(0, iDolarIndex);
}
//修正了Excel2003中某些工作薄名稱為漢字的表無法正確識別的BUG。
if (tempName[0] == ‘\”)
{
if (tempName[tempName.Length – 1] == ‘\”)
{
tempName = tempName.Substring(1, tempName.Length – 2);
}
else
{
tempName = tempName.Substring(1, tempName.Length – 1);
}
}
if (!alTables.Contains(tempName))
{
alTables.Add(tempName);
}
}
odn.Close();
if (alTables.Count == 0)
{
return null;
}
return alTables;
}

程式碼
複製程式碼 程式碼如下:
/// <summary>
/// 獲取指定路徑、指定工作簿名稱的Excel資料
/// </summary>
/// <param name=”FilePath”>檔案儲存路徑</param>
/// <param name=”WorkSheetName”>工作簿名稱</param>
/// <returns>如果爭取找到了資料會返回一個完整的Table,否則返回異常</returns>
public DataTable GetExcelData(string FilePath, string WorkSheetName)
{
DataTable dtExcel = new DataTable();
OleDbConnection con = new OleDbConnection(GetExcelConnection(FilePath));
OleDbDataAdapter adapter = new OleDbDataAdapter(“Select * from [” WorkSheetName “$]”, con);
//讀取
con.Open();
adapter.FillSchema(dtExcel, SchemaType.Mapped);
adapter.Fill(dtExcel);
con.Close();
dtExcel.TableName = WorkSheetName;
//返回
return dtExcel;
}

程式碼
複製程式碼 程式碼如下:
/// <summary>
/// 獲取連結字串
/// </summary>
/// <param name=”strFilePath”></param>
/// <returns></returns>
public string GetExcelConnection(string strFilePath)
{
if (!File.Exists(strFilePath))
{
throw new Exception(“指定的Excel檔案不存在!”);
}
return “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” strFilePath “;Extended properties=\”Excel 8.0;Imex=1;HDR=Yes;\””;
//@”Provider=Microsoft.Jet.OLEDB.4.0;”
//@”Data Source=” strFilePath “;”
//@”Extended Properties=” Convert.ToChar(34).ToString()
//@”Excel 8.0;” “Imex=1;HDR=Yes;” Convert.ToChar(34).ToString();
}

您可能感興趣的文章:

asp.net實現匯出DataTable資料到Word或者Excel的方法asp.net實現資料從DataTable匯入到Excel檔案並建立表的方法Asp.net中DataTable匯出到Excel的方法介紹ASP.NET DataTable去掉重複行的2種方法ASP.NET中DataTable與DataSet之間的轉換示例ASP.NET怎麼操作DataTable例項應用Asp.net下使用Jquery Ajax傳送和接收DataTable的程式碼asp.net 資料庫的連線和datatable類Asp.net靜態方法之Grid轉DataTable方法實現步驟Asp.net實現選擇性的保留DataTable中的列asp.net DataTable匯出Excel自定義列名的方法