• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

ASP.NET(C#)读取Excel的文件内容

c# 搞代码 4年前 (2022-01-09) 12次浏览 已收录 0个评论

.xls格式 Office2003及以下版本
.xlsx格式  Office2007 及以上版本
.csv格式 以逗号分隔的字符串文本(可以将上述两种文件类型另存为此格式)   
读取前两种格式和读取后一种格式会用两种不同的方法。

下面看程序:
页面前台:

<div>       <%-- 文件上传控件  用于将要读取的文件上传 并通过此控件获取文件的信息--%>      <asp:FileUpload ID="fileSelect" runat="server" />          <%-- 点击此按钮执行读取方法--%>       <asp:Button ID="btnRead" runat="server" Text="ReadStart" /></div>  

后台代码:

//声明变量(属性) string currFilePath = string.Empty; //待读取文件的全路径  string currFileExtension = string.Empty;  //文件的扩展名  //Page_Load事件 注册按钮单击事件  protected void Page_Load(object sender,EventArgs e)  {      this.btnRead.Click += new EventHandler(btnRead_Click);  }  //按钮单击事件   //里面的3个方法将在下面给出 protected void btnRead_Click(object sender,EventArgs e) {     Upload();  //上传文件方法     if(this.currFileExtension ==".xlsx" || this.currFileExtension ==".xls")       {            DataTable dt = ReadExcelToTable(currFilePath);  //读取Excel文件(.xls和.xlsx格式)       }       else if(this.currFileExtension == ".csv")         {               DataTable dt = ReadExcelWidthStream(currFilePath);  //读取.csv格式文件         } }

下面列出按钮单击事件中的3个方法

///<summary>///上传文件到临时目录中 ///</ummary>private void Upload(){HttpPostedFile file = this.fileSelect.PostedFile;string fileName = file.FileName;string tempPath = System.IO.Path.GetTempPath(); //获取系统临时文件路径fileName = System.IO.Path.GetFileName(fileName); //获取文件名(不带路径)this.currFileExtension = System.IO.Path.GetExtension(fileName); //获取文件的扩展名this.currFilePath = tempPath + fileName; //获取上传后的文件路径 记录到前面声明的全局变量file.SaveAs(this.currFilePath); //上传}///<summary>///读取xls\xlsx格式的Excel文件的方法 ///</ummary>///<param name="path">待读取Excel的全路径</param>///<returns></returns>private DataTable ReadExcelToTable(st<strong style="color:transparent">本文来源gao@daima#com搞(%代@#码网@</strong>ring path){//连接字符串string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; // Office 07及以上版本 不能出现多余的空格 而且分号注意//string connstring = Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';"; //Office 07以下版本 因为本人用Office2010 所以没有用到这个连接字符串 可根据自己的情况选择 或者程序判断要用哪一个连接字符串using(OleDbConnection conn = new OleDbConnection(connstring)){conn.Open();DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[]{null,null,null,"Table"}); //得到所有sheet的名字string firstSheetName = sheetsName.Rows[0][2].ToString(); //得到第一个sheet的名字string sql = string.Format("SELECT * FROM [{0}],firstSheetName); //查询字符串OleDbDataAdapter ada =new OleDbDataAdapter(sql,connstring);DataSet set = new DataSet();ada.Fill(set);return set.Tables[0];}}///<summary>///读取csv格式的Excel文件的方法 ///</ummary>///<param name="path">待读取Excel的全路径</param>///<returns></returns>private DataTable ReadExcelWithStream(string path){DataTable dt = new DataTable();bool isDtHasColumn = false; //标记DataTable 是否已经生成了列StreamReader reader = new StreamReader(path,System.Text.Encoding.Default); //数据流while(!reader.EndOfStream){string meaage = reader.ReadLine();string[] splitResult = message.Split(new char[]{','},StringSplitOption.None); //读取一行 以逗号分隔 存入数组DataRow row = dt.NewRow();for(int i = 0;i<splitResult.Length;i++){if(!isDtHasColumn) //如果还没有生成列{dt.Columns.Add("column" + i,typeof(string));}row[i] = splitResult[i];}dt.Rows.Add(row); //添加行isDtHasColumn = true; //读取第一行后 就标记已经存在列 再读取以后的行时,就不再生成列}return dt;}

更多ASP.NET(C#)读取Excel的文件内容相关文章请关注搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ASP.NET(C#)读取Excel的文件内容
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址