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. jquery和CSS3带倒影的3D万花筒旋转动画特效效果演示

    <!DOCTYPE html> <html> <head> <title></title> <meta charset='utf-8' ...

  2. SVN地址正确,能在网页打开,但是检出失败解决方法

    TortoiseSVN缓存问题 右键点击TortoiseSVN -> Settings -> Saved Data, 点击个个“Clear”按钮,把本地缓存都清除了,点击“确定”: 再重新 ...

  3. CSS中的那点事儿(一)--- CSS中的单位1

    单位主要用在规定元素的数值性css属性的,这里主要讨论应用的比较多的是width height  padding margin font-size,而单位中应用最广泛就是%.px.em 百分比 百分比 ...

  4. oracle 删除用户命令和部分表空间操作

    删除用户 drop user user_name cascade; 建立表空间 CREATE TABLESPACE data01DATAFILE '/oracle/oradata/db/DATA01. ...

  5. Opencv实现两幅图像融合

    实现两幅图像线性(不同系数下)的融合涉及到Opencv中两个关键的方法,addWeighted()和createTrackbar() addWeighted方法: 函数原型: void addWeig ...

  6. I.MX6 sdio 设备注册及识别

    /************************************************************************* * I.MX6 sdio 设备注册及识别 * 说明 ...

  7. java -- 虚拟机和内存

    从大方向来分:栈内存,堆内存,方法区,本地方法栈,程序计数器 java从存储数据的角度来分: 寄存器(register):最快的存储区,由编译器根据需求进行分配,不由认为控制. 堆栈(statck): ...

  8. 「NOIP2014」「LuoguP2296」 寻找道路

    Description 在有向图 G 中,每条边的长度均为 1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向的点都直接或间接与终点连通. 在 ...

  9. HBase之一:HBase原理和设计

    一.简介 HBase —— Hadoop Database的简称,Google BigTable的另一种开源实现方式,从问世之初,就为了解决用大量廉价的机器高速存取海量数据.实现数据分布式存储提供可靠 ...

  10. Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法Windows版(手贱强制重启电脑的后果)

    转自:https://blog.csdn.net/rrrrroy_ha/article/details/80601497