您的位置:首页 > 数据库

c# + extjs 上传excel文件并保存到数据库

2013-11-25 16:15 525 查看
页面代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="upload.aspx.cs" Inherits="upload" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>导入用户</title>
<link href="extjs3.3/resources/css/ext-all.css" rel="stylesheet" type="text/css" />

<!--Extjs-->
<script src="extjs3.3/ext-base.js" type="text/javascript"></script>
<script src="extjs3.3/ext-all.js" type="text/javascript"></script>

<script type="text/javascript" src="upload.js"></script>
</head>
<body>

<div id="file"></div>

</body>
</html>


extjs代码:

Ext.onReady(function(){
var form = new Ext.form.FormPanel({
renderTo: 'file',
labelAlign: 'right',
title: '文件上传',
labelWidth: 60,
frame: true,
//url: 'UploadFile.aspx',//fileUploadServlet
width: 300,
height: 200,
fileUpload: true,
items: [{
xtype: 'textfield',
fieldLabel: '文件名1',
name: 'file',
inputType: 'file'//文件类型
}],

buttons: [{
text: '上传',
handler: function () {
form.getForm().submit({
waitTitle: '系统提示',
waitMsg: '正在上传,请等待...',
url: 'UploadFile.aspx',
method: 'POST',
success: function (form, action) {
Ext.Msg.alert('恭喜', '用户信息导入成功!');
},
failure: function () {
Ext.Msg.alert('错误', '用户信息导入失败!');
}
});
}
}]
});

});


 

后台代码:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
//using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

using System.Data.OleDb;
using System.Text;

public partial class UploadFile : System.Web.UI.Page
{
public string jSONString = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{

try
{   //文件存储路径
string saveFoler = Server.MapPath("upload_files/");
string savePath, fileName;
//遍历File表单元素 ,可以上传数个文件
for (int iFile = 0; iFile < Request.Files.Count; iFile++)
{
HttpPostedFile postedFile = Request.Files[iFile];
fileName = Path.GetFileName(postedFile.FileName);
if (fileName != "")
{
string fileType = fileName.Substring(fileName.LastIndexOf("."));
//唯一编号
string newName = Guid.NewGuid().ToString("N") + fileType;
savePath = saveFoler + newName;
//检查是否在服务器上已经存在用户上传的同名文件
if (File.Exists(savePath))
{
File.Delete(savePath);
}
postedFile.SaveAs(savePath);
//保存到数据库中
ExcelToDS(savePath);
}
}
jSONString = "{success:true,message:'上传完成!'}";
}
catch(Exception ex)
{
jSONString = "{success:false,message:'上传失败,可能因为上传文件过大导致!'}";
}

Response.Write(jSONString);
Response.Flush();
}

//导入到数据库
public void ExcelToDS(string path)         {

string filePath = path;

string connExcel = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=YES\"";

try
{

OleDbConnection oleDbConnection = new OleDbConnection(connExcel);

oleDbConnection.Open();

//方法1
// string olestr = "select * from [Sheet1$]";
//   OleDbCommand oleComm = new OleDbCommand(olestr, oleDbConnection);
//   oleComm.Connection = oleDbConnection;
// OleDbDataAdapter oleDa = new OleDbDataAdapter();
// oleDa.SelectCommand = oleComm;
// DataSet ds = new DataSet();
// oleDa.Fill(ds);

// foreach (DataRow row in ds.Tables[0].Rows)
// {
//     string userInfo = row[0].ToString().Trim();
// }

//获取excel表

DataTable dataTable = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

//获取sheet名,其中[0][1]...
: 按名称排列的表单元素

string tableName = dataTable.Rows[0][2].ToString().Trim();

tableName = "[" + tableName.Replace("'","") + "]";

//利用SQL语句从Excel文件里获取数据

string query = "SELECT 用户编号,用户姓名,备注 FROM " + tableName;

DataSet dataSet = new DataSet();

OleDbDataAdapter oleAdapter = new OleDbDataAdapter(query,connExcel);

oleAdapter.Fill(dataSet,"UserInfo");

//从excel文件获得数据后,插入记录到SQL Server的数据表

System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("Data Source=192.168.2.15;User ID=sa;Password=1231;Persist Security Info=True;Initial Catalog=HS");

DataTable dataTable1 = new DataTable();

System.Data.SqlClient.SqlDataAdapter sqlDA1 = new System.Data.SqlClient.SqlDataAdapter(@"SELECT RoleId, PassWord, UserState, DefaultPlace,UserId, UserName, Remarks FROM UserInfo", conn);

System.Data.SqlClient.SqlCommandBuilder sqlCB1 = new System.Data.SqlClient.SqlCommandBuilder(sqlDA1);

sqlDA1.Fill(dataTable1);

foreach(DataRow dataRow in dataSet.Tables["UserInfo"].Rows)

{

DataRow dataRow1 = dataTable1.NewRow();

dataRow1["UserId"] = dataRow["用户编号"];

dataRow1["UserName"] = dataRow["用户姓名"];

dataRow1["Remarks"] = dataRow["备注"];

dataRow1["RoleId"] = 11;
//默认密码为123
dataRow1["PassWord"] = "123";
dataRow1["DefaultPlace"] = 1;
dataRow1["UserState"] = true;

dataTable1.Rows.Add(dataRow1);

}

sqlDA1.Update(dataTable1);

oleDbConnection.Close();

}

catch(Exception ex)

{
Console.WriteLine(ex.ToString());
}
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# 文件上传 技术人
相关文章推荐