Excel自动校验 请教如何批量校验数据

最近,工作上接到Excel批量导入数据的需求。在这里,小编想分享的是数据校验那些事,至于如何读取Excel数据,大家可以百度下。
一般而言,Excel批量导入数据,我们都会给客户提供一个固定的模板以输入我们期望的数据。然而,客户的操作,我们是无法预料的,他们有可能增加一列或者删除一列,有可能去掉Excel某个字段的输入限制等等。
Excel模板,有可能只有一个,有可能若干个。各个模板的数据列,或交叉相同,或存在个性化列。
同一个模板,也许因某列数据的不同,而需要填充不同数据列。......
面对一系列不确定因素,小编在此提出小小的解决方案。
我们可以定义这么一个类:
public class ExcelTemplate
/// &summary&
/// &/summary&
public string ColumnName { get; set; }
/// &summary&
/// 是否必填
<span style="color: #
/// &/summary&
<span style="color: #
public bool IsRequire { get; set; }
<span style="color: #
<span style="color: #
/// &summary&
<span style="color: #
/// 列类型
<span style="color: #
/// &/summary&
<span style="color: #
public string ColumnType { get; set; }
<span style="color: #
有这么一个模板:
创建表头类
<span style="color: # var myExcelTemplate = new List&ExcelTemplate&();
<span style="color: # myExcelTemplate.Add(new ExcelTemplate() { ColumnName = "序号", IsRequire = true, ColumnType = "string" });
<span style="color: # myExcelTemplate.Add(new ExcelTemplate() { ColumnName = "姓名", IsRequire = true, ColumnType = "string" });
<span style="color: # myExcelTemplate.Add(new ExcelTemplate() { ColumnName = "入职日期", IsRequire = true, ColumnType = "DateTime" });
假如已经成功读取Excel数据
<span style="color: # System.Data.DataTable excelData = GetDataFromExcel(excelPath);
这时候,校验Excel可以这样子~~
//判断是否存在数据行
if (excelData == null || excelData.Rows.Count &= <span style="color: #)
//不存在数据行
//遍历所有行
foreach (System.Data.DataRow row in excelData.Rows)
<span style="color: #
<span style="color: #
<span style="color: #
foreach (var item in myExcelTemplate)
<span style="color: #
<span style="color: #
//判断列合法性
<span style="color: #
if (!excelData.Columns.Contains(item.ColumnName))
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
//判断列是否必填
<span style="color: #
if (item.IsRequire && (row[item.ColumnName] == null || string.IsNullOrWhiteSpace(row[item.ColumnName].ToString())))
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
//根据列类型尝试类型转换
<span style="color: #
switch (item.ColumnType)
<span style="color: #
<span style="color: #
case "DateTime":
<span style="color: #
<span style="color: #
if (!row[item.ColumnName].IsDateTime())
<span style="color: #
<span style="color: #
//类型转换失败
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
<span style="color: #
Views(...) Comments()苹果/安卓/wp
积分 489, 距离下一级还需 311 积分
权限: 自定义头衔, 签名中使用图片
道具: 涂鸦板, 彩虹炫, 雷达卡, 热点灯, 显身卡, 匿名卡, 金钱卡, 抢沙发下一级可获得
权限: 隐身
购买后可立即获得
权限: 隐身
道具: 金钱卡, 变色卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
& & &&是这样,我的“实证数据”这个文件夹里包含了上千个以基金名字命名的文件夹,每个文件夹里对应这支基金的几个excel表,我想要把所有以“基金名字+详细数据”命名的表都转换成stata的格式。& &
& && &想到了用foreach这个循环语句,下面是我编的程序,但是跑不出来,恳请各位老师、朋友帮帮忙!
local corp &新华 兴全 中邮&
foreach c of local corp {
import excel &C:\Users\shichu\Desktop\实证数据\&`c'&\&`c'&详细数据.xlsx&, sheet(&Sheet2&)
save &C:\Users\shichu\Desktop\stata数据\&`c'&.dta&
总评分:&学术水平 + 1&
热心指数 + 1&
信用等级 + 1&
本帖被以下文库推荐
& |主题: 926, 订阅: 276
怎么没有人呢...自己顶一下
你把Do文件放在和那些excel文档相同的路径下,这样可以省去那些文件夹路径。
比如你有三个excel文档,文件名分别叫1、2、3,每个excel文档中都有一个sheet,叫“sheet1”,那么命令如下:
foreach file in 1 2 3 {
import excel &`file'&, sheet(&Sheet1&) firstrow
save `file'.dta, replace
我试过了,按我这个写肯定没问题。Import命令后面不能加clear参数,所以要单写一行clear。如果不clear,下一个import是无法执行的。
xingxf 发表于
你把Do文件放在和那些excel文档相同的路径下,这样可以省去那些文件夹路径。
比如你有三个excel文档,文件 ...确实好使了!不过最后出现这么几行是什么意思呢:
(note: file 新华.dta not found)
file 新华.dta saved
(note: file 兴全.dta not found)
file 兴全.dta saved
(note: file 中邮.dta not found)
file 中邮.dta saved
end of do-file
xingxf 发表于
你把Do文件放在和那些excel文档相同的路径下,这样可以省去那些文件夹路径。
比如你有三个excel文档,文件 ...按照您说的方法确实可以解决您举出的例子,但是对于我的数据却有一个问题,就是我的这些excel并不是放在一个文件夹里,而是分布在各个以file名称命名的文件夹里,这样路径里就必然有...\`file'\`file'详细数据\这一部分,stata可以识别\`file'详细数据\,但是好像stata不能识别\`file'\,怎么办呀?
shichu 发表于
按照您说的方法确实可以解决您举出的例子,但是对于我的数据却有一个问题,就是我的这些excel并不是放在一 ...最简单的办法,你把那些文件都放在相同文件夹下。
foreach file in 1 2 3 {
import excel &`file'&, sheet(&Sheet1&) firstrow
save `file'.dta, replace
你看这个语法,foreach后面这个循环是对每个文件进行相同的操作,你要是在不同的文件路径,那就等于第二行那个import后面的命令不一样,那怎么能用循环呢。
xingxf 发表于
最简单的办法,你把那些文件都放在相同文件夹下。
foreach file in 1 2 3 {
import excel &`file'&, sh ...可是我如果用import excel &c:\Users\shichu\Desktop\`file'\`file'&, sheet(&Sheet1&) firstrow,不就能把文件名也循环进去吗?
打错了,是文件夹名称
shichu 发表于
打错了,是文件夹名称把文件夹的名称也循环进去,另外,我想要把.得到的dta保存在另一个路径下,为什么stata就做不出来了呢:
save &C:\Users\shichu\Desktop\stata数据\`file'.dta&
xingxf 发表于
最简单的办法,你把那些文件都放在相同文件夹下。
foreach file in 1 2 3 {
import excel &`file'&, sh ...打错了,是把文件夹的名称也循环进去,另外,我想要把.得到的dta保存在另一个路径下,为什么stata就做不出来了呢:
save &C:\Users\shichu\Desktop\stata数据\`file'.dta&
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
论坛法律顾问:王进律师请问EXCEL做大量检验报告数据,需要一个处理器可以大批量的从文本里复制粘贴请问处理器怎么做?_百度知道
请问EXCEL做大量检验报告数据,需要一个处理器可以大批量的从文本里复制粘贴请问处理器怎么做?
检验报告是由三次元测出得出的文本格式,可以利用处理器把文本格式一次性大批量的复制进去,请问这处理器该怎么做?.bat...
检验报告是由三次元测出得出的文本格式,可以利用处理器把文本格式一次性大批量的复制进去,请问这处理器该怎么做?
&#xe6b9;答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
胡亦雄知道合伙人
软件应用类认证行家
知道合伙人
软件应用类行家
采纳数:10
获赞数:13
毕业后从事网络推广
可以采用SQL语句多表汇总生成表一、针对列名称都一样的多表具体如下:打开文件点数据 现有连接 浏览更多 找到要做汇总的工作簿打开 &在弹出的框中选一个表(注意:数据首行包含列标题的勾一定要打上)点确定后弹出如下图所示选择生成表然后点属性 &定义选项卡下命令文本中输入&select * from [工作簿1所在路径].[数据表1名称$] union all select * from [工作簿2所在路径].[数据表2名称$]&union all select * from [工作簿3所在路径].[数据表3名称$] 再点确定二、针对不同列名称的多表合并前面的步骤一致,在命令文本中输入select 所需名称1,所需名称2,* from [工作簿1所在路径].[数据表1名称$] union all select 所需名称3,所需名称4,* from [工作簿2所在路径].[数据表2名称$]&union all select 所需名称5,* from [工作簿3所在路径].[数据表3名称$] (根据实际情况输入字段名称,没有的字段用null)
skyblue345知道合伙人
skyblue345
采纳数:82
获赞数:95
用excel数据导入,在插入里面,选择txt文本格式,然后选择分隔符,或者自定义都可以
本回答被网友采纳
lmze2000知道合伙人
来自电脑网络类芝麻团
采纳数:255
获赞数:1147
参与团队:
使用VBA可以进行批量的数据处理,如果方便,可以帮你看看。给出示例文件。
kyl611知道合伙人
采纳数:38
获赞数:42
需要知道文本中的数据格式和需要填到excel以后的格式
ynzsvt知道合伙人
来自电脑网络类芝麻团
采纳数:2175
获赞数:3961
参与团队:
看看规则,看看能不能挣钱
QQ知道合伙人
采纳数:117
获赞数:62
用传说中的VBA啊,你可以百度一下
其他3条回答
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。如何在导入EXCEL批量校验EXCEL各行数据的正确?并返回结果到TXT
[问题点数:20分,结帖人CSDN]
本版专家分:41
结帖率 66.67%
CSDN今日推荐
本版专家分:2372
本版专家分:41
本版专家分:2372
匿名用户不能发表回复!|
其他相关推荐

我要回帖

更多关于 什么叫大数据分析 的文章

 

随机推荐