您的位置:首页 > 编程语言 > ASP

ASP.NET中读取excel内容,并显示在界面上

2011-07-10 13:08 507 查看
// 上传按钮
protected void btnUp_Click(object sender, EventArgs e)
{
bool b = Upload(fuExcel);  // 上传excel文件
if (!b)
{
return;
}
string name = fuExcel.FileName;
string filepath = Server.MapPath("~/upload/") + name;
DataSet ds = ExcelDataSource(filepath, ExcelSheetName(filepath)[0].ToString());
GridView1.DataSource = ds;
GridView1.DataBind();
}

//上传文件方法
private bool Upload(FileUpload myFileUpload)
{
bool flag = false;
//是否允许上载
bool fileAllow = false;
//设定允许上载的扩展文件名类型
string[] allowExtensions = { ".xls" };

//取得网站根目录路径
string path = HttpContext.Current.Request.MapPath("~/upload/");
//检查是否有文件案
if (myFileUpload.HasFile)
{
//取得上传文件之扩展文件名,并转换成小写字母
string fileExtension = System.IO.Path.GetExtension(myFileUpload.FileName).ToLower();
//检查扩展文件名是否符合限定类型
for (int i = 0; i < allowExtensions.Length; i++)
{
if (fileExtension == allowExtensions[i])
{
fileAllow = true;
}
}

if (fileAllow)
{
try
{
//存储文件到文件夹
myFileUpload.SaveAs(path + myFileUpload.FileName);
lblMes.Text = "文件导入成功";
flag = true;
}
catch (Exception ex)
{
lblMes.Text += ex.Message;
flag = false;
}
}
else
{
lblMes.Text = "不允许上载:" + myFileUpload.PostedFile.FileName + ",只能上传xls的文件,请检查!";
flag = false;
}
}
else
{
lblMes.Text = "请选择要导入的excel文件!";
flag = false;
}
return flag;
}

//该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径, sheetname为excel文件中的表名
public DataSet ExcelDataSource(string filepath, string sheetname)
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", strConn);
DataSet ds = new DataSet();
oada.Fill(ds);
conn.Close();
return ds;
}

//获得Excel中的所有sheetname。
public ArrayList ExcelSheetName(string filepath)
{
ArrayList al = new ArrayList();
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
DataTable sheetNames = conn.GetOleDbSchemaTable
(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
conn.Close();
foreach (DataRow dr in sheetNames.Rows)
{
al.Add(dr[2]);
}
return al;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: