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. HDU 6108 小C的倍数问题 【数学】 (2017"百度之星"程序设计大赛 - 初赛(A))

    小C的倍数问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  2. struts2 过滤器

    Chain.doFilter的作用就是继续请求的传递,可传递给下一个filter也可传递给目标页面 如左侧传递给filter2,但fiter2使用上面或者下面的方法将倾情重定向到一个新的页面,而不再传 ...

  3. 内核添加dts后,device和device_driver的match匹配的变动:通过compatible属性进行匹配【转】

    本文转载自:http://blog.csdn.net/ruanjianruanjianruan/article/details/61622053 内核添加dts后,device和device_driv ...

  4. 牛客练习赛42 E.热爆了

    这可能是全场最长的一份代码 问的其实是对于关键点的斯坦纳树大小 考虑补集转化,不合法的点就是它的子树中没有关键点的点和斯坦纳树根的祖先 树根不难求,关键点中dfs序最大最小点的LCA就是了 问题在前者 ...

  5. Elasticsearch分布式安装启动失败

    配置config目录下的 elasticsearch.yml  http.cors.enabled: true http.cors.allow-origin: "*" #分布安装. ...

  6. codeforces 673A A. Bear and Game(水题)

    题目链接: A. Bear and Game time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  7. 西交校赛 I. GZP and CS(数位dp)

    I. GZP and CS GZP love to play Counter-Strike(CS). One day GZP was playing a mod of CS. The counter- ...

  8. Python web —— Selenium 库

    Selenium:硒,一种化学元素. Selenium 是 Python 下第三方浏览器自动化工具. 1. Firefox/Chrome from selenium import webdriver ...

  9. c++中static的全部用法

    要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short ...

  10. Binder通信机制介绍

    1.Binder通信机制介绍 这篇文章会先对比Binder机制与Linux的通信机制的差别,了解为什么Android会另起炉灶,采用Binder.接着,会根据 Binder的机制,去理解什么是Serv ...