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秒极限让百万级数据瞬间 ...
随机推荐
- eclipse4.3 解决没有check out as maven project
最近想工作之余写点测试demo,习惯了公司的开发环境,便决定自己搭建开发环境,首先是找到好用的eclipse,就是能够使用eclipse创建maven project工程,该工程能够被eclipse的 ...
- 一个实用的UIView的类别
// // FrameAccessor.h // FrameAccessor // // Created by Alex Denisov on 18.03.12. // Copyright (c) 2 ...
- css3中animation的应用
1.css3 的相关属性: 相关代码: div { animation-name: myfirst; //动画的名称 animation-duration: 5s; //动画一个周期需要5秒 anim ...
- 执行sql语句异常...需要的参数与提供的值个数不匹配
执行mysql语句时,出现以下错误时. 看错误提示,提示说你的sql语句只需要5个参数,而你提供了8个值value,你确定你确实需要8个参数,而你的sql语句却提示说只需要5个参数 这时,请仔细检查一 ...
- Java 绘制环形的文字 (Circle Text Demo)
1. [代码]CircleTextDemo.java import java.awt.*;import java.awt.event.*;import java.awt.geom.*; /** ...
- 一步一步学Silverlight 2系列(12):数据与通信之WebClient
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- re(正则表达式)模块
一.最常用的匹配语法 re.match 从头开始匹配 re.search 匹配包含 re.findall 把所有匹配到的字符放到以列表中的元素返回 re.split 以匹配到的字符当做列表分隔符 r ...
- IOS中的沙盒机制
IOS中的沙盒机制(SandBox)是一种安全体系,它规定了应用程序只能在为该应用创建的文件夹内读取文件,不可以访问其他地方的内容.所有的非代码文件都保存在这个地方,比如图片.声音.属性列表和文本文件 ...
- Linux网络编程笔记(修订版)
我的网络编程笔记, 因为最近又要做Linux下的网络编程,故重新修订, 其中一些内容参考了文末的链接及文章 1. 基本概念 2. 基本接口 2.1. 打开一个socket 2.2. 将 ...
- Sublime Text3 python代码去除白色框框
之所以会出现白色框框,是因为代码不符合PEP8规范!!! 可以装一个 AUTOPEP8 插件,然后按 Ctrl + Alt + r 就会自动帮你PEP8格式化,白色框框就会消失了... 这是原来的博文 ...