1、千万不要使用永中表格(WPS没用过,这里只是个人观点,不是说永中表格的)

  我在公司得到的任务是将excel数据按照需求导入数据库总共主表大概3张,所以有点复杂(列子用的简单表,公司东西还是不要放出来),容易出各种小错,开始使用的是永中表格,导入的时候老是报错,辛苦对比数据对比了三天,然后无果,一个同事告诉我说,你这导入的数据有空格啊,一时间惊醒,一直在排除编辑器和sql语句错误,突然发现,是excel错了,那种心情,就真的是曰了狗了,后来仔细排查,发现问题全部出于excel表格中的各种问题,要么是中括号在永中表格中和数据库中不一致(都是用的英文输入),要么是无端端多了一个空格,只有数据库中能发现空格,后面换成office 办公,一切都好了 ^__^,

2、开始上传

  我使用的是先上传文件,然后虚拟表,然后删除上传文件的方法(没有前台代码,公司用的ext和josn混合使用我有点混)

  先上上传代码    

      

//读取excel的值存储到数据库
//1.上传Excel文件
private void excelUp()
{
string strPath;// 定义路劲
string strFileName;//定义文件名字
string strNewPath;//定义一个新的路径

strPath = Server.MapPath("~/fileTemp/");//服务器路径,获取
HttpPostedFile file = Request.Files[0];//变量file只针对于文件的引用,对文件的操作

if (file.GetType() == null)
{
Response.Write("{success:false,cont:'文件类型不正确!'}");
Response.End();
return;
}
strFileName = file.FileName;//文件的本地完整路劲
strFileName = strFileName.Substring(strFileName.LastIndexOf("\\") + 1);//文件路劲的截断

int lg = Request.Files[0].FileName.LastIndexOf(".") + 1;
string format = Request.Files[0].FileName.Substring(lg).ToLower();
if (Request.Files == null)
{
Response.Write("{success:false,msg:'请先选择文件!'}");
Response.End();
return;
}
else if (format != "xls" && format != "xlsx")
{
Response.Write("{success:false,msg:'导入失败,只能导入xls和xlsx格式的文件!'}");
Response.End();
return;
}
else
{
strNewPath = strPath + strFileName; //这是路径和文件名 等下用于删除
file.SaveAs(strNewPath);  //将文件保存
insertExclData(strNewPath, format); 调用下一个方法
}

return;
}

public void insertExclData(string strNewPath, string format)
{

ClassImportExecl execl = new ClassImportExecl();

DataTable dTable_excel = new DataTable();//创建一个dataset集的DataTable

dTable_excel = execl.getDtFromXlsCol(strNewPath);

File.Delete(strNewPath); //删除本地的文件

string strTableName = "tInverBassis_" + Session["userid"].ToString() + "_" + DateTime.Now.Ticks.ToString();//创建表的表名
ClassImportExecl ec = new ClassImportExecl();//excel方法
ec.impFromDt(dTable_excel,strTableName); //创建零时表 网上有很多方法

string dropSql = "drop table " + strTableName + " "; //使用完后删除临时表

//判断表列是否正确
ClassCnn cc = new ClassCnn();
string strSqlCloumn = "select count(*) from sys.columns where object_id = object_id('" + strTableName + "')";
int iCloumns = cc.getCnt(strSqlCloumn);//这里就是一个创建临时表的大概了
if (iCloumns != 15 )
{
cc.ExeCreateDropSql(dropSql);
Response.Write("{success:false,msg:'所导入表格表头不正确,请修改后导入!'}");
Response.End();
}

}

C#将excel数据按照需求导入Sql server遇到的问题(参考而已)的更多相关文章

  1. BULK INSERT如何将大量数据高效地导入SQL Server

    转载自:http://database.51cto.com/art/201108/282631.htm BULK INSERT如何将大量数据高效地导入SQL Server 本文我们详细介绍了BULK ...

  2. Excel表数据导入Sql Server数据库中

    Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nv ...

  3. excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理

    excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理方法: 方案1:修改注册表 出现文本被截断的原因是SQL Server的导入导出为了确定数据表的字段 ...

  4. Excel文件导入SQL Server数据库

    Excel表格的使用可谓是非常广泛,博主也简单百度了一下Excel的发展. 发展历程: 1982年 Microsoft推出了它的第一款电子制表软件-Multiplan,并在CP/M系统上大 Excel ...

  5. piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql

    piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql 需要不个mssql的sql文件导入mysql.他们的时间戳格式不同..ms用的是自定义的时 ...

  6. Excel数据通过plsql导入到Oracle

    Excel数据通过plsql导入到Oracle 1 准备Excel导入数据 2 把Excel文件另存为(文本文件(制表符分隔)(*.txt)) 或者将Excel文件另存为(Unicode文本) 之后唯 ...

  7. 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

    原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...

  8. 把Excel导入SQL server时出现错误

    在把Excel导入SQL server时出现“未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 ”该 错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12 ...

  9. 实战手记:让百万级数据瞬间导入SQL Server

    想必每个DBA都喜欢挑战数据导入时间,用时越短工作效率越高,也充分的能够证明自己的实力.实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本文将向大家推荐一个挑战4秒极限让百万级数据瞬间 ...

随机推荐

  1. openfire学习(一)

    需要开发一款软件,其中的即时通讯功能使用xmpp协议来做,服务端用openfire. openfire的下载和配置就不多说,可能大多数人第一次用会遇到登陆不了的问题,我也遇到了,事实上登陆错误是因为用 ...

  2. SDUT OJ 1221 亲和数 (找出某个数n所有的因子数,只需要暴力:2->sqrt(n) 即可 )

    亲和数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲和数对. ...

  3. POJ3087 Shuffle'm Up —— 打表找规律 / map判重

    题目链接:http://poj.org/problem?id=3087 Shuffle'm Up Time Limit: 1000MS   Memory Limit: 65536K Total Sub ...

  4. Ubuntu 12.04 nethogs 流量监控查看

    /*************************************************************** * Ubuntu 12.04 流量监控查看 * 说明: * 今天打算从 ...

  5. 【BZOJ 3884】 上帝与集合的正确用法

    [题目链接] 点击打开链接 [算法] 通过欧拉拓展定理,列出递推公式 [代码] #include<bits/stdc++.h> using namespace std; typedef l ...

  6. table中tr或者td的点击事件

    直接把时间添加到table或者tbody上,只有下面的tr或者td才能促发事件,通过e.target可以获得当前点击tr或者td,这样就可以进行查询或者删除操作了 如果是删除,直接e.target.r ...

  7. 字符串转UTF-8码(%开头)

    var str = '中'; var code = encodeURI(str); console.log(code); // => %E4%B8%AD

  8. bzoj2144

    二分+lca 我们把向中间缩看成向上爬,向两边走看成向下爬,那么就相当于找出两个状态的lca,如果相邻的差是(a,b),a<b,那么向中间走就是(a,b-a)或(b-a,a),这个东西很像更相减 ...

  9. 【旧文章搬运】Idle进程相关的一些东西

    原文发表于百度空间,2009-05-13========================================================================== Idle进 ...

  10. oracle报ORA-00911:invalid character

    转自:http://www.cnblogs.com/chuang-sharing/p/9493316.html 今天查问题的时候,发现一个在分号后边加注释,解析错误的问题: select decode ...