c#操作excel文件

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(); } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值