aspx:
批量导入:
<asp:FileUpload ID="FileUpload1" runat="server" Height="25px" />
<asp:HyperLink ID="HyperLink1" NavigateUrl="~/Question/question_joke.xls" runat="server" Text="下载模板"></asp:HyperLink>
<asp:Button runat="server" ID="Button1" OnClick="Button1_Click" Text="查看" Height="25px" Width="54px" />
<asp:Button runat="server" ID="Button2" OnClick="Button2_Click" Text="导入" Height="25px" Width="54px" Enabled="false" />
<asp:GridView ID="gridview1" runat="server" Visible="true" BorderWidth="1px" BorderColor="LightGray" AlternatingRowStyle-BackColor="AliceBlue">
</asp:GridView>
<asp:Label ID="lblmes" runat="server" Visible="true" /><%--用于显示数据记录--%>
cs:
/*********************************添加命名空间**************************************/
using System.Data;
using System.Data.OracleClient;
using System.Data.OleDb;
/**********************************************************************************/
public partial class SpreadsheetUpload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string path = Server.MapPath("");
if (!FileUpload1.HasFile|| FileUpload1.FileName.Substring( FileUpload1.FileName.LastIndexOf('.')+1)!= "xls")
//判断FileUpload是否上传文件,文件名是否是.xls[excel2003]
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(),"","<script>alert('数据为空或导入的不是EXCEL文件.');</script>");
return;
}
else
{
FileUpload1.SaveAs(path + "\\" + FileUpload1.FileName);
//设置上传的文件保存在服务器上的路径[必须存在]
DataSet ds = new DataSet();
string ConnStr = "Provider=Microsoft.Jet.OleDb.4.0;data source=" + path + "\\" + FileUpload1.FileName + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
//连接Excel的字符串
string query = "SELECT * FROM [题库格式$] WHERE ITEM IS NOT NULL"; //Excel中的表名称
OleDbCommand oleCommand = new OleDbCommand(query, new OleDbConnection(ConnStr));
OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
oleAdapter.Fill(ds, "table1");
int rowcount = ds.Tables["table1"].Rows.Count; //获取记录数
gridview1.DataSource = ds;
gridview1.DataBind();
lblmes.Text = rowcount.ToString();
}
if (lblmes.Text != "")
{
Button2.Enabled = true;
}
//若不点查看按钮,直接点击导入按钮将出错,因为此时gridview中尚无数据,所以在此做一判断。
}
protected void Button2_Click(object sender, EventArgs e)
{
string strConnection = ConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString.ToString();
OracleConnection con = new OracleConnection(strConnection);
con.Open();
//连接数据库,并打开数据库
if (Convert.ToInt32(lblmes.Text) > 0)
{
foreach (GridViewRow row in this.gridview1.Rows)
{
string zsbh = row.Cells[0].Text.ToString();
string xm = row.Cells[1].Text.ToString();
//DateTime kssj =DateTime.Parse(row.Cells[2].Text);
string sfcx = row.Cells[2].Text.ToString();
//string zslx = row.Cells[4].Text.ToString();
string strSQL = "insert into tb_classic_joke(num,笑话一则,item) values('" + zsbh + "','" + xm + "','" + sfcx + "')";
//数据库中必须存在该表zs
OracleCommand com = new OracleCommand(strSQL, con);
com.ExecuteNonQuery();
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('导入成功!');</script>");
}
}
if (lblmes.Text != "" || Convert.ToInt32(lblmes.Text) != 0)
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('数据不能为空!');</script>");
}
con.Close();
}
}
原理:
1.将EXCEL文件通过FileUpdate上传保存到服务器
2.读取该文件到gridview中
3.插入数据库