.aspx 文件

<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" CssClass="form form-control " Style="width: 180px;" />
<div>
</div>
<asp:Button ID="Button1" CssClass="btn btn-info" runat="server" OnClick="UploadExeclFile" Text="保存" />
<button class="btn btn-default" onclick="BtnReturn()">返回</button>
</div>
</form>

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HSRFQ.Common;

namespace HSRFQ
{
public partial class sMaterialDetailsImport : System.Web.UI.Page
{
private DBHelper db = new DBHelper();
public string sMaterialTypeGuid="";
public string sMaterialTypeCode = "";
protected void Page_Load(object sender, EventArgs e)
{
//将物料类别的guid传递过来
sMaterialTypeGuid = Request.QueryString["sMaterialTypeGuid"];
sMaterialTypeCode = Request.QueryString["sMaterialTypeCode"];
}

protected void UploadExeclFile(object sender, EventArgs e)
{
if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
{
Response.Write("<script>alert('请您选择Excel文件')</script> ");
return;//当无文件时,返回
}
string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
if (!(IsXls == ".xls" || IsXls == ".xlsx"))
{
Response.Write("<script>alert('只可以选择Excel文件')</script>");
return;//当选择的不是Excel文件时,返回
}
//新建文件夹 ExcelTemp
if (!Directory.Exists(Server.MapPath("~/ExcelTemp/")))
{
Directory.CreateDirectory(Server.MapPath("~/ExcelTemp/"));
}

// string filename = FileUpload1.FileName; //获取Execle文件名 DateTime日期函数
//文件重命名
string FileName = System.Guid.NewGuid().ToString();

string savePath = Server.MapPath("~/ExcelTemp/" + FileName + IsXls);//Server.MapPath 获得虚拟服务器相对路径

FileUpload1.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上
DataSet ds = null;
try
{
ds = ExcelSqlConnection(savePath, FileName); //调用自定义方法
}
catch (Exception ex)
{
Response.Write(savePath);
Response.Write(ex.Message);
Response.End();
}
DataRow[] dr = ds.Tables[0].Select(); //定义一个DataRow数组
int rowsnum = ds.Tables[0].Rows.Count;
string sUserNo = "";
HttpCookie cookie = Request.Cookies["sUser"];
if (cookie == null)
{
Response.Write("<script>alert('系统异常,请登录重新操作!');</script>");
}
else
{
sUserNo = cookie["sUserNo"];
}

if (rowsnum == 0)
{
Response.Write("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示
}
else
{
string sBatchStr = "";
for (int i = 0; i < dr.Length; i++)
{
string sMaterialType = dr[i]["物料类别"].ToString();
string smaterialNo = dr[i]["物料编号"].ToString();
if (smaterialNo == "")
{
continue;
}
string smaterialName = dr[i]["物料名称"].ToString();
string sMaterialStatus = dr[i]["物料状态"].ToString();
string sMaterialShuXing = dr[i]["物料属性"].ToString();
string sSpecification = dr[i]["物料规格"].ToString();
string sUnit = dr[i]["单位"].ToString();
string sMaterialTypeExCode = dr[i]["物料类别U9代码"].ToString();

//物料信息拼接的字符串
sBatchStr += sMaterialType.Trim()+"@@"+
smaterialNo.Trim() + "@@" +
smaterialName.Trim() + "@@" +
sMaterialStatus.Trim() + "@@" +
sMaterialShuXing.Trim() + "@@" +
sSpecification + "@@" +
sUnit.Trim() + "@@" +
sMaterialTypeExCode.Trim() + "$$";
}
string ssql = string.Format("spsMaterialDetailsExcelImport '{0}','{1}','{2}'", sBatchStr, sUserNo,sMaterialTypeGuid);
DataTable dt = null;
try
{
dt = db.ExecuteDataTable(ssql, null);
}
catch (Exception ex)
{
Response.Write(ssql);
Response.End();
}
string iStatus = dt.Rows[0]["iStatus"].ToString();
string sMessage = dt.Rows[0]["sMessage"].ToString();
if (iStatus == "1")
{
Response.Write("<script>alert('Excle表导入成功!');location.href='/MaterialInfoShow/MaterialDetail?uguid="+sMaterialTypeGuid+ "&sMaterialTypeCode="+sMaterialTypeCode+"';</script>");
}
else
{
Response.Write("<script>alert('" + sMessage + "');location.href='/MaterialInfoShow/MaterialDetail?uguid=" + sMaterialTypeGuid + "&sMaterialTypeCode=" + sMaterialTypeCode + "';</script>");
}
}
}

#region 连接Excel 读取Excel数据 并返回DataSet数据集合

/// <summary>
/// 连接Excel 读取Excel数据 并返回DataSet数据集合
/// </summary>
/// <param name="filepath">Excel服务器路径</param>
/// <param name="tableName">Excel表名称</param>
/// <returns></returns>
public System.Data.DataSet ExcelSqlConnection(string filepath, string tableName)
{
string sExt = System.IO.Path.GetExtension(filepath);
string strCon = "";
if (sExt == ".xlsx")//Excel2007
{
strCon =
"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + filepath + ";" +
"Extended Properties='Excel 12.0;HDR=YES'";
}
else if (sExt == ".xls") //Excel2003
{
//strCon =
// "Provider=Microsoft.Jet.OLEDB.4.0;" +
// "Data Source=" + filepath + ";" +
// "Extended Properties='Excel 8.0;;HDR=YES;IMEX=1'";

strCon =
"Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + filepath + ";" +
"Extended Properties='Excel 12.0;HDR=YES'";
}
else
{
throw new Exception("未知的文件类型");
}
// strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
OleDbConnection ExcelConn = new OleDbConnection(strCon);
try
{
//从execl中获取所需要的字段信息 插入到数据库中的
string strCom = string.Format("SELECT * FROM [Sheet1$]");
ExcelConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, ExcelConn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "[" + tableName + "$]");
ExcelConn.Close();
return ds;
}
catch (Exception ex)
{
Response.Write(strCon);
Response.Write("<br/>");
Response.Write(ex.Message);
Response.End();
ExcelConn.Close();
return null;
}
}

#endregion 连接Excel 读取Excel数据 并返回DataSet数据集合
}
}

excel导入数据的的更多相关文章

  1. Excel导入数据到Sql server 中出错:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”

    从Excel导入数据到Sql server 时,由于表中的数据有的很长,导入时出现如下错误(如果数据不是很长,255内以内,则不会出现错误): 出错原因: SQL Server的导入导出为了确定数据表 ...

  2. C#实现Excel模板导出和从Excel导入数据

    午休时间写了一个Demo关于Excel导入导出的简单练习 1.窗体 2.引用office命名空间 添加引用-程序集-扩展-Microsoft.Office.Interop.Excel 3.封装的Exc ...

  3. 项目经验之:再来一章:excel导入数据 封装成最棒的不容易!!!

    我见过很的系统,包括OA,ERP,CRM等,在常用的功能当中,从外部导入数据是最常用到的.因为很多客户需要以excel的形式提供数据,,这样的方式我们又如何做呢, 大家最常见的做法可能是这样的,在需要 ...

  4. Dynamics CRM EXCEL导入数据字段类型为选项集时的注意事项

    在开始先展示下CRM的导入数据涉及选项集字段时的一个问题 下图是选项集字段的属性 下图是我要导入的excel中的列值,可以看出列明和字段名是一致的,而列值却不是选项集中已有的选项 在导入校验时,只要字 ...

  5. C# Excel导入数据

    表 表的创建脚本 CREATE TABLE [dbo].[TB_PROJECTS_New1]( , ) NOT NULL, ) NULL, ) NULL, , ) NULL, , ) NULL, , ...

  6. Open XML操作Excel导入数据

    项目中发现使用OleDb(using System.Data.OleDb)相关对象处理Excel导入功能,不是很稳定经常出问题,需要把这个问题解决掉.项目组提出使用OpenXML来处理Excel的导入 ...

  7. 实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件

    今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多 ...

  8. PHP Excel导入数据到MySQL数据库

    数据导出已经有了,怎么能没有数据导入呢,同样使用TP5框架,首先需要下载phpexcel.zip,放到第三方类库目录vendor目录下,然后有一个页面可以让你选择要导入的Excel文件,然后点击导入按 ...

  9. 【Kettle】Java借助Kettle将Excel导入数据

    示例功能(仅供测试): 在JAVA项目中,将数据从Excel文件导入数据库中.实现该能有多种方法,而本例则是“不走寻常路”,尝试借助Kettle实现数据导入. 原理: Java中调用存储在Kettle ...

  10. 利用Excel导入数据到SAP C4C

    假设要导入一个Account数据到C4C系统. 工作中心Data Workbench,工作中心视图Import,点download metadata: 会下载一个压缩包到本地. 进入文件夹Templa ...

随机推荐

  1. HDU 4965 Fast Matrix Calculation 矩阵乘法 乘法结合律

    一种奇葩的写法,纪念一下当时的RE. #include <iostream> #include <cstdio> #include <cstring> #inclu ...

  2. [数位dp] bzoj 3209 花神的数论题

    题意:中文题. 思路:和普通数位dp一样,这里转换成二进制,然后记录有几个一. 统计的时候乘起来就好了. 代码: #include"cstdlib" #include"c ...

  3. Linux 文件描写叙述符设置为非堵塞的方法

    通过fcntl设置文件描写叙述符属性 fcntl即F_SETFL,F_GETFL的使用,设置文件的flags,堵塞设置成非堵塞,非堵塞设置成堵塞(这连个在server开发中能够封装为基本函数) 1.获 ...

  4. bzoj1800: [Ahoi2009]fly 飞行棋(乱搞)

    1800: [Ahoi2009]fly 飞行棋 题目:传送门 题解: 大水题,早上签个到 没什么好说的...搞个前缀和,算个周长... 周长为奇数肯定误解啊废话QWQ 那么看到n<=20,还不暴 ...

  5. 曲根英语万词---二、evoke

    曲根英语万词---二.evoke 一.总结 一句话总结:evoke v.唤起,引起 词根:-voc-, -vok- [词根含义]:声音,叫喊 1.consecrate? v,供奉,奉为神圣 -ate, ...

  6. 4. idea常用快捷键设置(改为eclipse相似)

    转自:https://blog.csdn.net/loveer0/article/details/82697877 idea常用快捷键设置(改为eclipse相似) 目录 idea常用快捷键设置改为e ...

  7. Flume框架基础

    * Flume框架基础 框架简介: ** Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集.聚集.移动的服务,Flume只能在Unix环境下运行. ** Flume基于流式架构,容错性 ...

  8. 安装meteor运行基本demo发生错误。

    bogon:~ paul$ curl https://install.meteor.com/ | sh % Total % Received % Xferd Average Speed Time Ti ...

  9. python实例

    先来一段代码: #这段代码可牛逼了,1.可以根据indent的选项调整模式.2.根据level调整级别. #代码很low,主要看思想..哈哈哈..看看从最初的样子到最好经历了什么.. 开始: #!/u ...

  10. JavaScript:理解事件循环

    话说js是单线程的,它通过浏览器事件循环轮询事件队列,来实现异步.然而,事件循环的时机是什么时候?浏览器是如何帮助JS引擎线程实现异步的? 浏览器页面进程的四个线程 首先说一下,chrome会为每一个 ...