.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. Git学习总结(7)——Git GUI学习教程

    前言 之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并 ...

  2. python json及mysql——读取json文件存sql、数据库日期类型转换、终端操纵mysql及python codecs读取大文件问题

    preface: 近期帮师兄处理json文件,须要读到数据库里面,以备其兴许从数据库读取数据.数据是关于yelp站点里面的: https://github.com/Yelp/dataset-examp ...

  3. SJTU 1319. countColors

    题目描写叙述 知道 psypaint 怎么用吗?在巫女系统全面普及的未来世界.非常少人会知道 psypaint 的使用方法. 而身处在公安局作为监视官的朱同学.为了办案须要研究起了 psypaint ...

  4. Perfect Rectangle(完美矩形)

    我们有 N 个与坐标轴对齐的矩形, 其中 N > 0, 判断它们是否能精确地覆盖一个矩形区域. 每个矩形用左下角的点和右上角的点的坐标来表示.例如, 一个单位正方形可以表示为 [1,1,2,2] ...

  5. C语言打印100以内的质数

    C语言打印100以内的质数 #include <stdio.h> int main() { int number; int divisor; for( number = 3; number ...

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

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

  7. 【C#】报表制作&lt;机房重构&gt;

    前言 和VB须要引用其它报表软件不同,VS自带报表设计的功能,初次尝试.就感受到了它的强大之处. 报表制作 话不多说.直接报表的制作过程. 1.首先,我们要先制作一个报表的容器.放到我们显示报表的窗口 ...

  8. Android 提示: The connection to adb is down, and a severe error has occured.

    今天早上打开Eclipse,一直提示 The connection to adb is down, and a severe error has occured,无法执行程序.重新启动Eclipse. ...

  9. Android Jni 调用

    Chap1:JNI完全手册... 3 Chap2:JNI-百度百科... 11 Chap 3:javah命令帮助信息... 16 Chap 4:用javah产生一个.h文件... 17 Chap5:j ...

  10. RecyclerView让列表嵌套如此简单

    平常开发时,相信像这样的页面,大家一定是遇到过的.这里比较坑爹的地方在于呢:列表嵌套.订单列表中的每一项,都包含一个商品列表.像这种需求,大家会如何实现呢? 这里呢,说一下我自己的思路,我没有使用列表 ...