zoukankan
html css js c++ java
EXCEL导入GridView,然后再汇入数据库.
近日项目中有一个多笔料号要输入,我做了一个用javascript复制输入框的功能,可以输入多笔料号。
但是使用者反馈,料号太多,可能几百个料号在EXCEL文件里,这样输入很慢,需要增加功能。于是想到了SQLSERVER导入EXCEL的功能。
declare
@strExcelName
varchar
(
50
)
set
@strExcelName
=
'
c:\sl.xls
'
exec
(
'
select * into ##tmp from openrowset(
''
MICROSOFT.JET.OLEDB.4.0
''
,
''
Excel 8.0;HDR=No;IMEX=1;DATABASE=
'
+
@strExcelName
+
'''
,[Sheet1$])
'
)
select
*
from
##tmp
这样是可以导入数据,但是问题来了。我的数据库服务器和运行程序服务器不在同一服务器,无法导入(可能有方法,但是项目紧,没时间去探索),于是想到另外一个方法:先上传EXCEL文件,然后读入DATASET放入
GridView
,然后从
GridView
提交到数据库,这样就没有问题。
文件上传控件:
<
input
id
="myFile"
runat
="server"
type
="file"
/>
Form里不需要enctype="multipart/form-data"
文件上传代码:
if
(myFile.PostedFile.FileName
!=
""
)
{
//
上传文件的绝对路径
string
sFile
=
myFile.PostedFile.FileName;
//
获取文件全名
sFile
=
sFile.Substring(sFile.LastIndexOf(
"
\\
"
)
+
1
);
//
获取后缀名
sFile
=
sFile.Substring(sFile.LastIndexOf(
"
.
"
));
if
(sFile.ToLower()
!=
"
.xls
"
)
{
Response.Write(
"
请选择Excel文件!
"
);
Response.End();
}
//
为了防止重名,获得日期为文件名年月日时分秒毫秒
string
datatime
=
System.DateTime.Now.ToString(
"
yyyMMddHHmmssffff
"
);
//
上传后文件的新名
sFile
=
datatime
+
sFile;
//
AppDomain.CurrentDomain.BaseDirectory.ToString() 获取此项目的根目录
//
sPath 获取上传后的路径
string
sPath
=
AppDomain.CurrentDomain.BaseDirectory.ToString()
+
"
ExcelFiles\\
"
+
sFile;
//
上传文件
myFile.PostedFile.SaveAs(sPath);
this
.myGridView.DataSource
=
GetExcelContent(sPath);
this
.myGridView.DataBind();
}
读取EXCEL到DATASET代码:
private
DataSet GetExcelContent(
string
filepath)
{
string
strCon
=
"
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
"
+
filepath
+
"
;Extended Properties='Excel 8.0;HDR=No;IMEX=1'
"
;
System.Data.OleDb.OleDbConnection myConn
=
new
System.Data.OleDb.OleDbConnection(strCon);
string
strCom
=
"
SELECT F1 as resno,F2 as resname FROM [Sheet1$]
"
;
myConn.Open();
System.Data.OleDb.OleDbDataAdapter myCommand
=
new
System.Data.OleDb.OleDbDataAdapter(strCom, myConn);
//
创建一个DataSet对象
DataSet myDataSet
=
new
DataSet();
//
得到自己的DataSet对象
myCommand.Fill(myDataSet);
//
关闭此数据链接
myConn.Close();
return
myDataSet;
}
最后是数据提交到数据库代码:
string
stresno
=
""
;
string
stresname
=
""
;
foreach
(GridViewRow row
in
this
.myGridView.Rows)
{
Label txtesno
=
(Label)row.FindControl(
"
labresno
"
);
stresno
+=
txtesno.Text.ToString().Trim().Replace(
"
'
"
,
"
''
"
)
+
"
;
"
;
Label txtresname
=
(Label)row.FindControl(
"
labresname
"
);
stresname
+=
txtresname.Text.ToString().Trim().Replace(
"
'
"
,
"
''
"
)
+
"
;
"
;
}
Response.Write(stresno
+
"
<br/>
"
+
stresname);
Response.End();
查看全文
相关阅读:
css3---2D效果 ---3D效果
PHP 代 码 操 作 文 件
文件上传
在AJAX里 使用【 XML 】 返回数据类型 实现简单的下拉菜单数据
在AJAX里 使用【 JSON 】 返回数据类型 实现简单的下拉菜单数据
使用 AJAX + 三级联动 实现分类出全国各地的省,市,区
AJAX里使用的弹窗样式 tanchuang.js tanchuang.css
jquery-1.11.2.min.js
使用【 ajax 】【 bootstrap 】显示出小窗口 详情内容 一些代码意思可以参考下一个文章
AJAX基本操作 + 登录 + 删除 + 模糊查询
原文地址:https://www.cnblogs.com/cnaspnet/p/863680.html
最新文章
UVA Planning mobile robot on Tree树上的机器人(状态压缩+bfs)
UVA 11214 Guarding the Chessboard 守卫棋盘(迭代加深+剪枝)
HDU-4972-A simple dynamic programming problem
codeforce Gym 100570B ShortestPath Query (最短路SPFA)
URAL 2027 URCAPL, Episode 1 (模拟)
codeforce Gym 100500E IBM Chill Zone (SG函数)
codeforce Gym 100500A Poetry Challenge(博弈,暴搜)
codeforce Gym 100500H ICPC Quest (简单dp)
Failed to read artifact descriptor for xxx:jar的问题解决
linux查找日志技巧
热门文章
OJ技巧
POJ 2774 最长公共子串
NOI 2005 维修数列
HDU 2896 病毒侵袭
HDU 2222 Keywords Search
COJ 0538 购物问题
COJ 0018 移动盒子
POJ 3281 牛双选问题
POJ 2699 战斗小王子
POJ 2391 容牛问题
Copyright © 2011-2022 走看看