GridView读取Excel数据功能
具体代码:
public partial class ExcelToGridView : System.Web.UI.Page
{
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + @"e:\excel.xls" + "; Extended Properties='Excel 8.0;'";
protected void Page_Load(object sender, EventArgs e)
{ }
public DataSet CreateDataSource()
{
DataSet myds = new DataSet();
try
{
OleDbConnection olecon = new OleDbConnection(strCon);
olecon.Open();
OleDbDataAdapter myda = new OleDbDataAdapter("select * from [excel$]", olecon);
myda.Fill(myds);
olecon.Close();
}
catch (Exception er)
{
string ex = er.ToString();
}
return myds;
} /// <summary>
/// 从Excel中倒出到GridView中
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
if (CreateDataSource().Tables[0].Rows.Count > 0)
{
this.GridView1.DataSource = CreateDataSource().Tables[0].DefaultView;
this.GridView1.DataBind();
}
} }现在报错,请各位大侠帮忙看看
具体代码:
public partial class ExcelToGridView : System.Web.UI.Page
{
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + @"e:\excel.xls" + "; Extended Properties='Excel 8.0;'";
protected void Page_Load(object sender, EventArgs e)
{ }
public DataSet CreateDataSource()
{
DataSet myds = new DataSet();
try
{
OleDbConnection olecon = new OleDbConnection(strCon);
olecon.Open();
OleDbDataAdapter myda = new OleDbDataAdapter("select * from [excel$]", olecon);
myda.Fill(myds);
olecon.Close();
}
catch (Exception er)
{
string ex = er.ToString();
}
return myds;
} /// <summary>
/// 从Excel中倒出到GridView中
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Button1_Click(object sender, EventArgs e)
{
if (CreateDataSource().Tables[0].Rows.Count > 0)
{
this.GridView1.DataSource = CreateDataSource().Tables[0].DefaultView;
this.GridView1.DataBind();
}
} }现在报错,请各位大侠帮忙看看
解决方案 »
- WebClient.DownloadString html标签异常问题
- ckeditor 4.1.4如何 配置啊
- 求救:.net 远程连接sybase 11 数据库问题!
- javascript如何触发服务器端button的onClick事件?
- 我在首页禁用了 EnableViewState="false",可是这样的话,为什么首页的搜索全搜索不出东西了,感觉是没有取到值,为什么呢?
- 关于文件的访问权限
- 如何讓自定義控件在設計模式時顯示出外觀?多維數組保存在ViewState中如何還原回來?
- datalist0中的编辑单元中嵌有datalist1,datalist的每一行中都有按钮,请问我如何设置和得到这些按钮的事件
- 显示二进制图片的 问题请 大家帮忙,谢谢
- 小问题
- 如何用sql新建数据库
- PetShop里SQLServerDal的GetCommand()方法?
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 无法找到表 0。源错误:
行 51: protected void Button1_Click(object sender, EventArgs e)
行 52: {
行 53: if (CreateDataSource().Tables[0].Rows.Count > 0)
行 54: {
行 55: this.GridView1.DataSource = CreateDataSource().Tables[0].DefaultView;
是不是版本的问题叻?
{
string strConn = "Data Source=.;DataBase=gongnuan;Uid=sa;Pwd=sa";
if (FileUpload2.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
{
Response.Write("<script>alert('请您选择Excel文件')</script> ");
return;//当无文件时,返回
}
string IsXls = System.IO.Path.GetExtension(FileUpload2.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
if (IsXls != ".xls")
{
Response.Write("<script>alert('只可以选择Excel文件')</script>");
return;//当选择的不是Excel文件时,返回
}
SqlConnection cn = new SqlConnection(strConn);
cn.Open();
string filename = FileUpload2.FileName; //获取Execle文件名 DateTime日期函数
string savePath = Server.MapPath(("~\\upfiles\\") + filename);//Server.MapPath 获得虚拟服务器相对路径
FileUpload2.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上
DataSet ds = ExecleDs(savePath, filename); //调用自定义方法
DataRow[] dr = ds.Tables[0].Select(); //定义一个DataRow数组
int rowsnum = ds.Tables[0].Rows.Count;
if (rowsnum == 0)
{
Response.Write("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示
}
else
{
for (int i = 0; i < dr.Length; i++)
{
string container_code = dr[i]["货柜号"].ToString();//日期 excel列名【名称不能变,否则就会出错】
string delivery_date = dr[i]["出货日期"].ToString();//编号 列名 以下类似
string order_code = dr[i]["订单号"].ToString();
//string long_short = dr[i]["尺寸"].ToString();
//string bl = dr[i]["bl"].ToString();
string container_name = dr[i]["集装箱号"].ToString();
//string qian_code = dr[i]["铅封号"].ToString();
//string zhuang_date = dr[i]["装箱时间"].ToString(); string insertstr = "insert into container_code_name (container_code,delivery_date,order_code,container_name) values ('" + container_code + "',convert(datetime,'" + delivery_date + "'),'" + order_code + "','" + container_name + "')"; SqlCommand cmd = new SqlCommand(insertstr, cn);
try
{
cmd.ExecuteNonQuery();
}
catch (MembershipCreateUserException ex) //捕捉异常
{
Response.Write("<script>alert('导入内容:" + ex.Message + "')</script>");
}
}
Response.Write("<script>alert('Excle表导入成功!');location='default.aspx'</script>");
}
cn.Close();
}
if (ds.Tables[0].Rows.Count > 0)
{
this.GridView1.DataSource = ds;
this.GridView1.DataBind();
}
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
using(OleDbConnection OleConn = new OleDbConnection(strConn))
{
OleConn.Open();
String sql = "SELECT * FROM [Sheet1$]";
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet ds= new DataSet();
OleDaExcel.Fill(ds);
OleConn.Close();
}
外部表不是预期的格式。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 外部表不是预期的格式。源错误:
行 31: using (OleDbConnection OleConn = new OleDbConnection(strConn))
行 32: {
行 33: OleConn.Open();
行 34: String sql = "SELECT * FROM [Sheet1$]";
行 35: OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
麻烦再帮忙看看,谢了~
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
我到哪个asp中遇到这个问题。你可以是是改改哪个Properties='Excel 8.0 那个8.0的值。。改为excel对应的版本就可以了。。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 找不到可安装的 ISAM。源错误:
行 384: using (OleDbConnection OleConn = new OleDbConnection(strConn))
行 385: {
行 386: OleConn.Open();
行 387: String sql = "SELECT * FROM [Sheet1$]";
行 388: OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
什么原因?
HDR=NO 表示无字段
HDR=Yes 表示有字段,一般默认excel表中第1行的列标题为字段名
IMEX 表示是否强制转换为文本
Excel 8.0
之前公司用的盗版Office2003,后来换成正版2007。
发现问题是好事哈~ 嘿嘿