C#将excel数据按照需求导入Sql server遇到的问题(参考而已)
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遇到的问题(参考而已)的更多相关文章
- BULK INSERT如何将大量数据高效地导入SQL Server
转载自:http://database.51cto.com/art/201108/282631.htm BULK INSERT如何将大量数据高效地导入SQL Server 本文我们详细介绍了BULK ...
- Excel表数据导入Sql Server数据库中
Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nv ...
- excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理
excel导入sql server 文本被截断,或者一个或多个字符在目标代码页中没有匹配项 错误处理方法: 方案1:修改注册表 出现文本被截断的原因是SQL Server的导入导出为了确定数据表的字段 ...
- Excel文件导入SQL Server数据库
Excel表格的使用可谓是非常广泛,博主也简单百度了一下Excel的发展. 发展历程: 1982年 Microsoft推出了它的第一款电子制表软件-Multiplan,并在CP/M系统上大 Excel ...
- piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql
piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql 需要不个mssql的sql文件导入mysql.他们的时间戳格式不同..ms用的是自定义的时 ...
- Excel数据通过plsql导入到Oracle
Excel数据通过plsql导入到Oracle 1 准备Excel导入数据 2 把Excel文件另存为(文本文件(制表符分隔)(*.txt)) 或者将Excel文件另存为(Unicode文本) 之后唯 ...
- 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)
原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...
- 把Excel导入SQL server时出现错误
在把Excel导入SQL server时出现“未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 ”该 错误信息:未在本地计算机上注册“microsoft.ACE.oledb.12 ...
- 实战手记:让百万级数据瞬间导入SQL Server
想必每个DBA都喜欢挑战数据导入时间,用时越短工作效率越高,也充分的能够证明自己的实力.实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本文将向大家推荐一个挑战4秒极限让百万级数据瞬间 ...
随机推荐
- poj 3017 Cut the Sequence(单调队列优化DP)
Cut the Sequence \(solution:\) 这道题出的真的很好,奈何数据水啊! 这道题当时看得一脸懵逼,说二分也不像二分,说贪心也不像贪心,说搜索吧这题数据范围怎么这么大?而且这题看 ...
- hdu 1757 A Simple Math Problem (矩阵高速幂)
和这一题构造的矩阵的方法同样. 须要注意的是.题目中a0~a9 与矩阵相乘的顺序. #include <iostream> #include <cstdio> #include ...
- 在织梦dedecms中实现“文章标题-栏目名称-网站名”导航
本文介绍了在dedecms中,实现文章标题-栏目名称-网站名 导航的方法,有需要的朋友参考下. 在dedecms中实现“文章标题-栏目名称-网站名”导航的方法. 第一种: 在/include/in ...
- WAS:节点不同步问题
刀片服务器硬盘坏了,换了硬盘后,通过dmgr无法重启该节点上的server. 单机./starServer 后,服务虽然启动了,但后台一直提示如下: [-- ::: CST] RoleViewLead ...
- [Java] static, final
1.静态成员 静态成员独立于类的对象,先于对象的存在而存在.无论创建了类的多少个对象,静态成员都只有一个实例空间.一个静态变量被同一个类的所有对象共享.当改变了其中一个对象的静态变量时,其余对象的静态 ...
- May Challenge 2017
Chef and his daily routine 分析:水题,设置优先级,判断如果后面小于前面就输出no #include "iostream" #include " ...
- Educational Codeforces Round 24 CF 818 A-G 补题
6月快要结束了 期末也过去大半了 马上就是大三狗了 取消了小学期后20周的学期真心长, 看着各种北方的学校都放假嗨皮了,我们这个在北回归线的学校,还在忍受酷暑. 过年的时候下定决心要拿块ACM的牌子, ...
- oracle 分库分表(sharding)
以下文章转载博客:http://blog.csdn.net/bluishglc 讲的很深入透彻,转来分享下: 数据库Sharding的基本思想和切分策 http://blog.csdn.net/blu ...
- hdoj3665【简单DFS】
题意: 略. 思路: n就10而已,没有环,搜一下就好了.. #include <bits/stdc++.h> using namespace std; typedef long long ...
- hdoj1540 【线段树的表示】
大牛blog 这题的题解写给自己看-- 总结(瞎扯一点): 之前只会思考,len,sum,然后GG,如果只是sum和len的去用的话,就是在mid的时候会GG.然后这次也是参考大牛的写法,其实还是蛮简 ...