如何用aspasp.net读取excell文件

asp如何读取xls,并添加到数据库。求详细代码_百度知道ASP.NET(C#)读取Excel的文件内容
字体:[ ] 类型:转载 时间:
开发过程中难免会遇到读取Excel文件的情况,本文主要记录读取Excel文件的方法由于本文目的是供自己和各位童鞋日后学习参考,没有考虑过多方面,把所有方法及属性全部放到了一个文件中。
.xls格式&&&&&& Office2003及以下版本 .xlsx格式  Office2007 及以上版本 .csv格式&&&&&& 以逗号分隔的字符串文本(可以将上述两种文件类型另存为此格式)   读取前两种格式和读取后一种格式会用两种不同的方法。
下面看程序:页面前台: 代码如下:&div&&&&&&& &%-- 文件上传控件& 用于将要读取的文件上传 并通过此控件获取文件的信息--%&&&&&& &asp:FileUpload ID="fileSelect" runat="server" /&&&&&&&&&& &%-- 点击此按钮执行读取方法--%&&&&&&& &asp:Button ID="btnRead" runat="server" Text="ReadStart" /&&/div&  
后台代码: 代码如下:&//声明变量(属性)&string currFilePath = string.E //待读取文件的全路径 &string currFileExtension = string.E& //文件的扩展名 &//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.PostedFstring fileName = file.FileNstring tempPath = System.IO.Path.GetTempPath(); //获取系统临时文件路径fileName = System.IO.Path.GetFileName(fileName); //获取文件名(不带路径)this.currFileExtension = System.IO.Path.GetExtension(fileName); //获取文件的扩展名this.currFilePath = tempPath + fileN //获取上传后的文件路径 记录到前面声明的全局变量file.SaveAs(this.currFilePath); //上传}
///&summary&///读取xls\xlsx格式的Excel文件的方法 ///&/ummary&///&param name="path"&待读取Excel的全路径&/param&///&returns&&/returns&private DataTable ReadExcelToTable(string 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 = //标记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.Li++){if(!isDtHasColumn) //如果还没有生成列{dt.Columns.Add("column" + i,typeof(string));}row[i] = splitResult[i];}dt.Rows.Add(row); //添加行isDtHasColumn = //读取第一行后 就标记已经存在列 再读取以后的行时,就不再生成列}}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具怎样读取本地Excel数据,并保存到时服务器,-asp.net-电脑编程网怎样读取本地Excel数据,并保存到时服务器,作者:myhot21 和相关&&
公司有个内部费用数据系统(不联网),可以把数据导出为EXCEL格式.现在要做个网上的费用查询系统,供所有用户网上查询费用,准备用ASP.NET或ASP实现,现在实现的方法是:做一个后台,直接读取我们本地的Excel文件,跟着保存到上的MSSQL.&
问题是:我们未做过这样的后台,我想知ASP.NET或ASP有没提供什么类库或方法可以读取本地的Excel文件,知道的告诉下我相关方法.&
如果我上边说得不明白,各位朋友可以在下边留言,等着你们的答案,先谢谢大家.------回答---------------回答(5分)---------/// &summary&&
/// 读取Excel数据到DataSet&
/// &/summary&&
/// &param name=&strFileName&&带路径名称&/param&&
/// &returns&&/returns&&
private static DataSet ReadExcel(string strFileName)&
string strConnection = &Provider=Microsoft.Jet.OLEDB.4.0;Data Source='{0}';Extended Properties=\&Excel 8.0;HDR=YIMEX=1;Persist Security Info=False\&&;&
strConnection = string.Format(strConnection, strFileName);&
OleDbConnection con = new OleDbConnection(strConnection);&
con.Open();&
DataTable schema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, &TABLE& });&
//下面取得第一个表名
string strTableName = schema.Rows[0][&TABLE_NAME&].ToString();&
OleDbDataAdapter da = new OleDbDataAdapter(&SELECT * FROM [& + strTableName + &]&, con);&
DataSet ds = new DataSet();&
da.Fill(ds);&
da.Dispose();&
catch (Exception ex)&
con.Close();&
}这样可以不------回答(10分)---------我做的是先将本地的Excel文件上传到,然后在服务器端读取,然后写入,最后删除这个Excel文件。不知道怎么在本地读,不过感觉如果在本地读取的话,再往服务器提交文件中的内容是件很烦琐的事情,而且感觉并不可取。------回答(10分)---------private DataSet ReadExcelFile()&
string sA&
string filePath = &&;&
string fileExtend = &&;//文件扩展名&
int fileSize = 0;//文件大小&
filePath = this.fileDaoRu.PostedFile.FileName.ToLower().Trim();&
//取得上传前的文件(存在于客户端)的文件或文件夹的名称,组成数组.例如:C:aaaa.txt,那么Names.lenth就为3&
string[] names = filePath.Split('\\');&
//取得文件名&
string name = names[names.Length - 1];&
string serverPath = this.Server.MapPath(&\\&);//获得服务器端的根目录&
//判断是否有该目录&
if (!Directory.Exists(serverPath + &file&))&
Directory.CreateDirectory(serverPath + &file&);&
serverPath = serverPath + &file&;&
filePath = serverPath +&
//如果存在,删除文件&
//if(File.Exists(filePath))&
File.Delete(filePath);&
// 上传文件&
this.fileDaoRu.PostedFile.SaveAs(filePath);&
//得到文件的大小&
fileSize = this.fileDaoRu.PostedFile.ContentL&
//得到扩展名&
fileExtend = filePath.Substring(filePath.IndexOf(&.&));&
if (fileSize == 0)&
sArgs = @&&script language=script&window.alert( '找不到该文件!' );&/script&&;&
Page.Response.Write(sArgs);&
if (fileExtend != &.xls&)&
sArgs = @&&script language=script&window.alert( '请确认您所导入的文件是否EXCEL文件!!' );&/script&&;&
Page.Response.Write(sArgs);&
DataSet ds = new DataSet();&
OleDbConnection conn = new OleDbConnection(&Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=& + filePath);&
if (conn.State != ConnectionState.Open)&
conn.Open();&
sArgs = @&&script language=javascript&window.alert( 'EXCEL文件正在使用!' );&/script&&;&
Page.Response.Write(sArgs);&
OleDbCommand com = conn.CreateCommand();&
mandText = &select * from [sheet1$]&;&
mandType = CommandType.T&
OleDbDataAdapter adapter = new OleDbDataAdapter(com);&
adapter.Fill(ds);&
adapter.Dispose();&
conn.Close();&
conn.Dispose();&
catch (Exception ex)&
throw new Exception(ex.Message);&
}这个是单独的导一个EXCEL文件数据,先上传到服务器,然后获取EXCEL文件数据添加在DataSet中,然后遍历DataSet插入数据库,如果多文件的话还没有试过,前台使用的File控件
有什么不对的请多多指出
谢谢!------回答(10分)---------/// &summary&&
/// 读取Excel数据到DataSet&
/// &/summary&&
/// &param name=&strFileName&&带路径名称&/param&&
/// &returns&&/returns&&
private static DataSet ReadExcel(string strFileName)&
string strConnection = &Provider=Microsoft.Jet.OLEDB.4.0;Data Source='{0}';Extended Properties=\&Excel 8.0;HDR=YIMEX=1;Persist Security Info=False\&&;&
strConnection = string.Format(strConnection, strFileName);&
OleDbConnection con = new OleDbConnection(strConnection);&
con.Open();&
DataTable schema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, &TABLE& });&
//下面取得第一个表名
string strTableName = schema.Rows[0][&TABLE_NAME&].ToString();&
OleDbDataAdapter da = new OleDbDataAdapter(&SELECT * FROM [& + strTableName + &]&, con);&
DataSet ds = new DataSet();&
da.Fill(ds);&
da.Dispose();&
catch (Exception ex)&
con.Close();&
}怎么贴不上去?------回答(10分)---------你在本地怎么处理Excel啊?
貌似很困难.还不如写个winform 的程序,读取,链接sql服务器,写入.------回答(20分)---------不过,倒是应该有解决方法的,在页面上把本地的文件上传到服务器,保存在某个位置剩下的问题就是在服务器端处理excel的问题了,我感觉最好是参考communityserver的Job :& 在web应用程序启动的时候,开一个线程,此线程定时去看这个位置有没有文件,有就处理,处理完后删除.
------回答(5分)---------最好是先上传到服务器上再读取数据存入数据库,我刚刚做了一个ASP的导入Excel程序,不知道你有没有用邮箱留一下我给你发过去------回答(20分)---------引用 23 楼 myhot21 的回复:APS.NET或ASP是不是本地不可以处理Excel的,因为我只查到有从本地上传文件到服务器的方法,和处理服务器上的Excel文件的方法. 如果APS.NET或ASP真的不可以处理本地的Excel文件的话,大家告诉下我,免得我到处找资料. 烦啊.............不管是Asp.net 还是 Asp,代码的执行都是在服务端,你又如何能在本地执行?你想把数据保存到数据库,也只能在服务端执行,也就是必须把内容或文件传提交服务器。当然,你可能是想先在客户端对Excel进行修改,然后再存入数据库,我想,既然你都能在客户端读去EXCEL,那插入数据应该也不是难事,你可以处理Request中传递过来的值,比如Request.Form[&TextArea1&],然后对数据库进行操作。
------回答(10分)---------对于B/S这种方式你想在客户端处理数据确实有难度。24楼的做法应该可以,最终的处理仍然是在服务器上进行的。------回答---------------回答(5分)--------- /// &summary& &
/// 读取Excel数据到DataSet &
/// &/summary& &
/// &param name=&strFileName&&带路径名称&/param& &
/// &returns&&/returns& &
private static DataSet ReadExcel(string strFileName) &
string strConnection = &Provider=Microsoft.Jet.OLEDB.4.0;Data Source='{0}';Extended Properties=\&Excel 8.0;HDR=YIMEX=1;Persist Security Info=False\&&; &
strConnection = string.Format(strConnection, strFileName); &
OleDbConnection con = new OleDbConnection(strConnection); &
con.Open(); &
DataTable schema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, &TABLE& }); &
//下面取得第一个表名
string strTableName = schema.Rows[0][&TABLE_NAME&].ToString(); &
OleDbDataAdapter da = new OleDbDataAdapter(&SELECT * FROM [& + strTableName + &]&, con); &
DataSet ds = new DataSet(); &
da.Fill(ds); &
da.Dispose(); &
catch (Exception ex) &
con.Close(); &
}这样可以不------回答(10分)---------我做的是先将本地的Excel文件上传到服务器,然后在服务器端读取,然后写入数据库,最后删除这个Excel文件。不知道怎么在本地读,不过感觉如果在本地读取的话,再往服务器提交文件中的内容是件很烦琐的事情,而且感觉并不可取。------回答(10分)---------
private DataSet ReadExcelFile() &
string sA &
string filePath = &&; &
string fileExtend = &&;//文件扩展名 &
int fileSize = 0;//文件大小 &
filePath = this.fileDaoRu.PostedFile.FileName.ToLower().Trim(); &
//取得上传前的文件(存在于客户端)的文件或文件夹的名称,组成数组.例如:C:aaaa.txt,那么Names.lenth就为3 &
string[] names = filePath.Split('\\'); &
//取得文件名 &
string name = names[names.Length - 1]; &
string serverPath = this.Server.MapPath(&\\&);//获得服务器端的根目录 &
//判断是否有该目录 &
if (!Directory.Exists(serverPath + &file&)) &
Directory.CreateDirectory(serverPath + &file&); &
serverPath = serverPath + &file&; &
filePath = serverPath + &
//如果存在,删除文件 &
//if(File.Exists(filePath)) &
File.Delete(filePath); &
// 上传文件 &
this.fileDaoRu.PostedFile.SaveAs(filePath); &
//得到文件的大小 &
fileSize = this.fileDaoRu.PostedFile.ContentL &
//得到扩展名 &
fileExtend = filePath.Substring(filePath.IndexOf(&.&)); &
if (fileSize == 0) &
sArgs = @&&script language=javascript&window.alert( '找不到该文件!' );&/script&&; &
Page.Response.Write(sArgs); &
if (fileExtend != &.xls&) &
sArgs = @&&script language=javascript&window.alert( '请确认您所导入的文件是否EXCEL文件!!' );&/script&&; &
Page.Response.Write(sArgs); &
DataSet ds = new DataSet(); &
OleDbConnection conn = new OleDbConnection(&Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=& + filePath); &
if (conn.State != ConnectionState.Open) &
conn.Open(); &
sArgs = @&&script language=javascript&window.alert( 'EXCEL文件正在使用!' );&/script&&; &
Page.Response.Write(sArgs); &
OleDbCommand com = conn.CreateCommand(); &
mandText = &select * from [sheet1$]&; &
mandType = CommandType.T &
OleDbDataAdapter adapter = new OleDbDataAdapter(com); &
adapter.Fill(ds); &
adapter.Dispose(); &
conn.Close(); &
conn.Dispose(); &
catch (Exception ex) &
throw new Exception(ex.Message); &
}这个是单独的导一个EXCEL文件数据,先上传到服务器,然后获取EXCEL文件数据添加在DataSet中,然后遍历DataSet插入数据库,如果多文件的话还没有试过,前台使用的File控件
有什么不对的请多多指出
谢谢!------回答(10分)--------- /// &summary& &
/// 读取Excel数据到DataSet &
/// &/summary& &
/// &param name=&strFileName&&带路径名称&/param& &
/// &returns&&/returns& &
private static DataSet ReadExcel(string strFileName) &
string strConnection = &Provider=Microsoft.Jet.OLEDB.4.0;Data Source='{0}';Extended Properties=\&Excel 8.0;HDR=YIMEX=1;Persist Security Info=False\&&; &
strConnection = string.Format(strConnection, strFileName); &
OleDbConnection con = new OleDbConnection(strConnection); &
con.Open(); &
DataTable schema = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, &TABLE& }); &
//下面取得第一个表名
string strTableName = schema.Rows[0][&TABLE_NAME&].ToString(); &
OleDbDataAdapter da = new OleDbDataAdapter(&SELECT * FROM [& + strTableName + &]&, con); &
DataSet ds = new DataSet(); &
da.Fill(ds); &
da.Dispose(); &
catch (Exception ex) &
con.Close(); &
}怎么贴不上去?------回答(10分)---------你在本地怎么处理Excel啊?
貌似很困难.还不如写个winform 的程序,读取excel,链接sql服务器,写入.------回答(20分)---------
不过,倒是应该有解决方法的,在页面上把本地的excel文件上传到服务器,保存在某个位置剩下的问题就是在服务器端处理excel的问题了,我感觉最好是参考communityserver的Job :& 在web应用程序启动的时候,开一个线程,此线程定时去看这个位置有没有文件,有就处理,处理完后删除.
------回答(5分)---------最好是先上传到服务器上再读取数据存入数据库,我刚刚做了一个ASP的导入Excel程序,不知道你有没有用邮箱留一下我给你发过去------回答(20分)---------
引用 23 楼 myhot21 的回复:APS.NET或ASP是不是本地不可以处理Excel的,因为我只查到有从本地上传文件到服务器的方法,和处理服务器上的Excel文件的方法.
如果APS.NET或ASP真的不可以处理本地的Excel文件的话,大家告诉下我,免得我到处找资料.
烦啊.............不管是Asp.net 还是 Asp,代码的执行都是在服务端,你又如何能在本地执行?你想把数据保存到数据库,也只能在服务端执行,也就是必须把内容或文件传提交服务器。当然,你可能是想先在客户端对Excel进行修改,然后再存入数据库,我想,既然你都能在客户端读去EXCEL,那插入数据应该也不是难事,你可以处理Request中传递过来的值,比如Request.Form[&TextArea1&],然后对数据库进行操作。
------回答(10分)---------对于B/S这种方式你想在客户端处理数据确实有难度。24楼的做法应该可以,最终的处理仍然是在服务器上进行的。相关资料:|||||||怎样读取本地Excel数据,并保存到时服务器,来源网络,如有侵权请告知,即处理!编程Tags:                &                    您当前所在位置: >
> 编辑语言
asp连接与操作excel的详细方法
这是一篇关于asp连接与操作excel的详细方法的文章,它主要讲述了asp与Excel之间的相关内容,接下来让我们一起了解一下。
一、asp连接Excel的方法与代码:
&%dim connxls,connstrxls
connstrxls=&DBQ=d:\newexcel.DefaultDir=;DRIVER={Microsoft Excel Driver (*.xls)};&
Set connxls=Server.CreateObject(&ADODB.Connection&)
connxls.Open connstrxls
Set rsxls=Server.CreateObject(&ADODB.Recordset&)
SQLxls = &select * from [new$]&
注意: 写法和连接ACCESS基本相同,不同的是,在调用工作表的时候,不能直接用表名,工作表名后要加$,而且要用&[]&括起来。
二、asp操作Excel的总结:
1、建立Excel对象
setobjExcelApp=CreateObject(&Excel.Application&)
objExcelApp.DisplayAlerts=false不显示警告
objExcelApp.Application.Visible=false不显示界面
2、新建Excel文件
objExcelApp.WorkBooks.add
setobjExcelBook=objExcelApp.ActiveWorkBook
setobjExcelSheets=objExcelBook.Worksheets
setobjExcelSheet=objExcelBook.Sheets(1)
3、读取已有Excel文件
strAddr=Server.MapPath(&.&)
objExcelApp.WorkBooks.Open(strAddr&&\Templet\Table.xls&)
Set objExcelBook=objExcelApp.ActiveWorkBook
Set objExcelSheets=objExcelBook.Worksheets
Set objExcelSheet=objExcelBook.Sheets(1)
4、另存Excel文件
objExcelBook.SaveAsstrAddr&&\Temp\Table.xls&
5、保存Excel文件
objExcelBook.Save(笔者测试时保存成功,页面报错。)
6、退出Excel操作
objExcelApp.Quit一定要退出
Set objExcelApp=Nothing
三、ASP操作Excel生成数据表
1、在一个范围内插入数据
objExcelSheet.Range(&B3:k3&).Value=Array(&67&,&87&,&5&,&9&,&7&,&45&,&45&,&54&,&54&,&10&)
2、在一个单元格内插入数据
objExcelSheet.Cells(3,1).Value=&InternetExplorer&
3、选中一个范围
4、单元格左边画粗线条
5、单元格右边画粗线条
6、单元格上边画粗线条
7、单元格下边画粗线条
8、单元格设定背景色
9、合并单元格
10、插入行
11、插入列
四、ASP操作Excel生成Chart图
1、创建Chart图
objExcelApp.Charts.Add
2、设定Chart图种类
objExcelApp.ActiveChart.ChartType=97
注:二维折线图,4;二维饼图,5;二维柱形图,51
3、设定Chart图标题
objExcelApp.ActiveChart.HasTitle=True
objExcelApp.ActiveChart.ChartTitle.Text=&AtestChart&
4、通过表格数据设定图形
objExcelApp.ActiveChart.SetSourceDataobjExcelSheet.Range(&A1:k5&),1
5、直接设定图形数据(推荐)
objExcelApp.ActiveChart.SeriesCollection.NewSeries
objExcelApp.ActiveChart.SeriesCollection(1).Name=&=&&333&&&
objExcelApp.ActiveChart.SeriesCollection(1).Values=&=&
6、绑定Chart图
objExcelApp.ActiveChart.Location1
7、显示数据表
objExcelApp.ActiveChart.HasDataTable=True
8、显示图例
objExcelApp.ActiveChart.DataTable.ShowLegendKey=True
五、服务器端Excel文件浏览、下载、删除方案
浏览的解决方法很多,&Location.href=&,&Navigate&,&Response.Redirect&都可以实现,建议用客户端的方法,原因是给服务器更多的时间生成Excel文件。
由精品学习网提供的asp连接与操作excel的详细方法就介绍到这里,希望可以给您提供一定的帮助。
上一篇:下一篇:
本文相关阅读
高校查询分数线
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
地区批次线查询
考生所在地
北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
科目理科文科综合其他
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
<option value="
院校所在地北京天津辽宁吉林黑龙江上海江苏浙江安徽福建山东湖北湖南广东重庆四川陕西甘肃河北山西内蒙古河南海南广西贵州云南西藏青海宁夏新疆江西香港澳门台湾
其它中央部委
类型工科农业师范民族
层次本科高职(专科)
高考志愿③部曲
频道热门推荐
栏目最新更新

我要回帖

更多关于 asp读取excel实例 的文章

 

随机推荐