using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.IO; using System.Data.OleDb; public partial class ReadExcel : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string filename = this.FileUpload1.FileName; FileInfo f = new FileInfo(filename); string saveName = "c://a." + f.Extension; if (filename.IndexOf(".xls") == -1) { Response.Write(""); } else { this.FileUpload1.SaveAs("c://a." + f.Extension); } DataTable data = GetExcelData(saveName); this.GridView1.DataSource = data; this.GridView1.DataBind(); } ///
/// 获取指定路径、指定工作簿名称的Excel数据:取第一个sheet的数据 /// ///
文件存储路径 ///
工作簿名称 ///
如果争取找到了数据会返回一个完整的Table,否则返回异常
public DataTable GetExcelData(string astrFileName) { string strSheetName = GetExcelWorkSheets(astrFileName)[0].ToString(); return GetExcelData(astrFileName, strSheetName); } ///
/// 返回指定文件所包含的工作簿列表;如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空 /// ///
要获取的Excel ///
如果有WorkSheet,就返回以工作簿名字命名的ArrayList,否则返回空
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; } ///
/// 获取指定路径、指定工作簿名称的Excel数据 /// ///
文件存储路径 ///
工作簿名称 ///
如果争取找到了数据会返回一个完整的Table,否则返回异常
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; } ///
/// 获取链接字符串 /// ///
///
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(); } }
c#操作excel文件
最新推荐文章于 2024-10-07 09:48:28 发布