ASP.NET实现excel上传功能
来源:爱站网时间:2020-08-17编辑:网友分享
在项目开发中,我们经常使用Excel将数据导入数据库,这样可以提高工作效率,本文是爱站技术频道小编为大家带来的ASP.NET实现excel上传功能,相信阅读完后都能有一定的帮助。
在 项目开发中,我们经常使用Excel将数据导入数据库,这样可以提高工作效率,本文是爱站技术频道小编为大家带来的ASP.NET实现excel上传功能,相信阅读完后都能有一定的帮助。
用到的资源:
(1)NOPI 2.2.0.0 可自己官网下载,也可点击:http://pan.baidu.com/s/1b1EMdg
(2)用到一些常见处理文件的公共方法类,可以添加到项目中:http://pan.baidu.com/s/1bJpHuQ
如过上述连接因故无法使用,可在评论留下邮箱,我打包发送过去,如有更好的建议,欢迎指导。
后台的提示方法ShowMsgHelper,根据自己的改写即可。
前台代码:
导入EXCEL,生成DataTable
后台代码;
protected void ImpClick(object sender, EventArgs e)
{
try
{
#region 校验
var fileName = this.FileUpload1.FileName;
if (string.IsNullOrWhiteSpace(fileName))
{
//提示信息
ShowMsgHelper.Alert("请选择上传Excel文件");
return;
}
//获取上传文件扩展名称
if (!(fileName.IndexOf(".xlsx") > 0 || fileName.IndexOf(".xls") > 0))
{
ShowMsgHelper.Alert("上传文件格式不正确,请核对!");
return;
}
#endregion
#region 将Excel文件上传到服务器上临时文件夹中
//临时文件夹,根目录下/Upload/tmp/,根据自己配置选择
string path = Server.MapPath("~/") + "Upload\\tmp\\";
string retStr=UploadHelper.FileUpload(path, this.FileUpload1);
if (!retStr.Equals("上传成功")) {
ShowMsgHelper.Alert(retStr);
return;
}
#endregion
#region 读取Excel文件第一个表获取内容并转换成DataTable,删除临时文件,也可以自己加时间戳,维护处理
DataTable dt = this.ExcelToDataTable(path + this.FileUpload1.FileName, true);
if (dt == null) {
ShowMsgHelper.Alert_Error("获取失败");
return;
}
//示例:获取dt中的值
string test = dt.Rows[0]["name"].ToString();
string test2 = dt.Rows[1]["class"].ToString();
//删除临时文件
DirFileHelper.DeleteFile("Upload\\tmp\\" + fileName);
#endregion
}
catch (Exception ex) {
throw ex;
}
}
///
/// 将excel导入到datatable
///
/// excel路径
/// 第一行是否是列名
/// 返回datatable
public DataTable ExcelToDataTable(string filePath, bool isColumnName)
{
DataTable dataTable = null;
FileStream fs = null;
DataColumn column = null;
DataRow dataRow = null;
IWorkbook workbook = null;
ISheet sheet = null;
IRow row = null;
ICell cell = null;
int startRow = 0;
try
{
using (fs = File.OpenRead(filePath))
{
// 2007版本
if (filePath.IndexOf(".xlsx") > 0)
workbook = new XSSFWorkbook(fs);
// 2003版本
else if (filePath.IndexOf(".xls") > 0)
workbook = new HSSFWorkbook(fs);
if (workbook != null)
{
sheet = workbook.GetSheetAt(0);//读取第一个sheet,当然也可以循环读取每个sheet
dataTable = new DataTable();
if (sheet != null)
{
int rowCount = sheet.LastRowNum;//总行数
if (rowCount > 0)
{
IRow firstRow = sheet.GetRow(0);//第一行
int cellCount = firstRow.LastCellNum;//列数
//构建datatable的列
if (isColumnName)
{
startRow = 1;//如果第一行是列名,则从第二行开始读取
for (int i = firstRow.FirstCellNum; i
看过爱站技术频道的讲解的ASP.NET实现excel上传功能,是不是明白了呢?编程朋友们赶紧学习起来吧,更多的专业小知识,尽在js.aizhan.com。
