界面:
main.aarido
import win.ui;
import console;
/*DSG{{*/
mainForm = win.form(text="分件-SplitFiling";right=479;bottom=575;border="dialog frame";max=false)
mainForm.add(
btnDC={cls="button";text="数据校验";left=80;top=512;right=176;bottom=544;font=LOGFONT(h=-14);tabstop=1;z=27};
btnDIR={cls="button";text="选择目录";left=16;top=48;right=112;bottom=72;font=LOGFONT(h=-14);tabstop=1;z=15};
btnFJ={cls="button";text="分件";left=304;top=512;right=400;bottom=544;disabled=1;font=LOGFONT(h=-14);tabstop=1;z=28};
btnXLS={cls="button";text="选择文件";left=16;top=16;right=112;bottom=40;font=LOGFONT(h=-14);tabstop=1;z=13};
chkMN={cls="checkbox";text="一页多件";left=384;top=168;right=464;bottom=192;font=LOGFONT(h=-14);tabstop=1;z=26};
groupbox={cls="groupbox";left=8;top=80;right=472;bottom=200;ah=1;aw=1;cp=1;edge=1;font=LOGFONT(h=-14);z=2};
groupbox2={cls="groupbox";left=8;top=0;right=472;bottom=80;ah=1;aw=1;cp=1;edge=1;font=LOGFONT(h=-14);z=1};
lstInfo={cls="listbox";left=16;top=208;right=464;bottom=512;ah=1;aw=1;edge=1;font=LOGFONT(h=-14);items={};msel=1;vscroll=1;z=3};
static={cls="static";text="索引字段";left=16;top=80;right=96;bottom=112;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=4};
static2={cls="static";text="排序字段";left=112;top=80;right=192;bottom=112;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=5};
static3={cls="static";text="页数字段";left=384;top=80;right=464;bottom=112;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=6};
static4={cls="static";text="页号字段";left=296;top=80;right=376;bottom=112;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=7};
static5={cls="static";text="件名称字段";left=200;top=80;right=280;bottom=112;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=8};
static6={cls="static";text="页号位数";left=16;top=136;right=96;bottom=168;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=9};
static7={cls="static";text="页号前缀";left=112;top=136;right=192;bottom=168;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=10};
static8={cls="static";text="页号后缀";left=200;top=136;right=280;bottom=168;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=11};
static9={cls="static";text="后缀名";left=296;top=136;right=376;bottom=168;center=1;font=LOGFONT(h=-14);notify=1;transparent=1;z=12};
txtFile={cls="edit";text="D:\TEST\fafj.xls";left=120;top=16;right=464;bottom=40;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=14};
txtID={cls="edit";text="案卷级档号";left=16;top=112;right=96;bottom=136;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=17};
txtJM={cls="edit";text="文件级档号";left=200;top=112;right=280;bottom=136;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=19};
txtOB={cls="edit";text="件号";left=112;top=112;right=192;bottom=136;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=18};
txtPath={cls="edit";text="D:\TEST\fafj";left=120;top=48;right=464;bottom=72;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=16};
txtPfn={cls="edit";text=".jpg";left=296;top=168;right=376;bottom=192;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=25};
txtPostfix={cls="edit";left=200;top=168;right=280;bottom=192;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=24};
txtPrefix={cls="edit";left=112;top=168;right=192;bottom=192;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=23};
txtWS={cls="edit";text="4";left=16;top=168;right=96;bottom=192;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=22};
txtYH={cls="edit";text="页号";left=296;top=112;right=376;bottom=136;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=20};
txtYS={cls="edit";text="页数";left=384;top=112;right=464;bottom=136;edge=1;font=LOGFONT(h=-14);hidesel=1;tabstop=1;z=21}
)
/*}}*/
/*菜单栏、状态栏{{*/
//菜单栏
import win.ui.menu;
var menuAbout = function(id){
win.msgbox('档案、文件分件工具。\r\nBUG提交:\r\n30157133@qq.com');;
}
var menuIntro = function(id){
var frmIntro = mainForm.loadForm("intro.aardio");
frmIntro.show();
}
var menu = win.ui.menu(mainForm);//创建主菜单
menu.add('使用说明',menuIntro);
menu.add('联系方式',menuAbout);
//状态栏
import win.ui.statusbar;
var statusbar = win.ui.statusbar( mainForm);
/*}}*/
/*自定义过程、函数、全局变量{{*/
//全局变量
namespace inData{
fil,fol,id,ob,jm,yh,ys,ws,prefix,postfix,pfn="";
}
//ADO连接excel字段
getDatabaseConnectionString=function(dataPath){
var strCnn="Provider=Microsoft.Jet.OLEDB.4.0;
Persist Security Info=False;
Extended Properties='Excel 8.0;HDR=Yes';
Data Source=" ++ dataPath;
return strCnn;
}
//读取界面信息并检查
getDataVal=function(){
var dataVal=true;
//读取数据
inData.fil=string.trim(mainForm.txtFile.text);
inData.fol=string.trim(mainForm.txtPath.text);
inData.id=string.trim(mainForm.txtID.text);
inData.ob=string.trim(mainForm.txtOB.text); //ob = order by
inData.jm=string.trim(mainForm.txtJM.text);
inData.yh=string.trim(mainForm.txtYH.text);
inData.ys=string.trim(mainForm.txtYS.text);
inData.ws=string.trim(mainForm.txtWS.text);
inData.prefix=string.trim(mainForm.txtPrefix.text);
inData.postfix=string.trim(mainForm.txtPostfix.text);
inData.pfn=string.trim(mainForm.txtPfn.text);
//数据检测
if(string.len(inData.fil)<1 || string.len(inData.fol)<1){
mainForm.msgbox("请选择分件文件及目录。");
dataVal=false;
}
if(string.len(inData.id)<1 || string.len(inData.ob)<1 || string.len(inData.jm)<1 || string.len(inData.yh)<1 ||
string.len(inData.ys)<1 || string.len(inData.ws)<1 || string.len(inData.pfn)<1){
mainForm.msgbox("字段名不能为空!");
dataVal=false;
}
return dataVal;
}
/*}}*/
/*选择文件、目录{{*/
//文件
import fsys.dlg;
mainForm.btnXLS.oncommand = function(id,event){
var file = fsys.dlg.open('Excel文件|*.xls||',,,mainForm);
if(!file){
return false;
}
mainForm.txtFile.text="";
mainForm.txtFile.text=file;
}
//目录
import fsys.dlg.dir;
mainForm.btnDIR.oncommand = function(id,event){
var path=fsys.dlg.dir();
if(!path){
return false;
}
mainForm.txtPath.text="";
mainForm.txtPath.text=path;
}
/*}}*/
/*分件{{*/
import fsys;
//import access;
mainForm.btnFJ.oncommand = function(id,event){
//初始化,变量赋值
mainForm.lstInfo.clear();
if(!getDataVal()){
return false;
};
// var fjfile,fjpath,path,dh,jh,yh,ys,prefix,postfix,mn;
var fjml,srcFile,srcFull,tarFull,strSQL;
mainForm.btnFJ.disabled=true;
mainForm.btnFJ.text="分件中……";
//建立数据表连接
var cnn=com.CreateObject("ADODB.Connection");
var rst=com.CreateObject("ADODB.Recordset");
cnn.ConnectionString=getDatabaseConnectionString(inData.fil);
cnn.open();
//遍历目录
fsys.enum(inData.fol, "*.*",,
function(dirPath,dirName){
//分件
strSQL="Select * From [Sheet1$] Where "
+ inData.id + "='" + dirName + "' Order By "
+ inData.id + "," + inData.ob;
rst.open(strSQL,cnn,1,3);
if(rst.recordcount<1){ //无记录提示
mainForm.lstInfo.add(dirName + " 无记录!");
mainForm.lstInfo.ensureVisible(mainForm.lstInfo.count);
rst.close();
return false;
}
fjml=inData.fol + "_FJOK\" + dirName;
fsys.createDir(fjml,1); //创建分件目录,选择的目录后加_FJOK
rst.movefirst();
for(i=1;rst.recordcount;1){
fsys.createDir(fjml + "\" + rst(inData.jm).value,1);
for(j=rst(inData.yh).value;rst(inData.yh).value + rst(inData.ys).value - 1;1){
if(string.len(inData.prefix)>0){
srcFile=string.concat(inData.prefix,string.format(
"%0"+inData.ws+"i",j));
}
else{
srcFile=string.format("%0"+inData.ws+"i",j);
}
if(string.len(inData.postfix)>0){
srcFile=string.concat(srcFile,inData.postfix);
}
srcFull=dirPath + "\" + srcFile + inData.pfn;
tarFull=fjml + "\" + rst(inData.jm).value + "\" + srcFile + inData.pfn;
if(io.exist(srcFull)==null){
mainForm.lstInfo.add(srcFull + " 文件不存在!");
}
else{
fsys.copy(srcFull,tarFull);
statusbar.addItem(srcFull, /*宽度*/);
}
}
rst.movenext();
}
rst.close();
return false;
}
);
statusbar.addItem("分件完成!", /*宽度*/);
mainForm.lstInfo.add("分件完成!");
mainForm.lstInfo.ensureVisible(mainForm.lstInfo.count);
mainForm.lstInfo.setFocus();
// mainForm.btnFJ.disabled=false;
mainForm.btnFJ.text="分件";
cnn.close();
cnn=null;
}
/*}}*/
mainForm.btnDC.oncommand = function(id,event){
var soreDir,strSQL,zys,i;
mainForm.btnFJ.disabled=true;
mainForm.lstInfo.clear();
if(!getDataVal()){
return false;
};
//建立数据表连接
var cnn=com.CreateObject("ADODB.Connection");
var rst=com.CreateObject("ADODB.Recordset");
cnn.ConnectionString=getDatabaseConnectionString(inData.fil);
cnn.open();
//遍历目录
fsys.enum(inData.fol, "*.*",,
function(dirPath,dirName){
i=0;
fsys.enum(dirPath, "*.*",
function(dir,filename,fullpath,findData){
if(filename){
i+=1;
}
}
,false/*如果此参数为false则忽略子目录*/
);
if(mainForm.chkMN.checked){ //一页多件
strSQL="Select * From [Sheet1$] Where " + inData.id + "='"
+ dirName + "' Order By " + inData.ob;
rst.open(strSQL,cnn,1,3);
if(rst.eof or rst.bof){
zys=0;
}
else {
rst.movelast();
//zys=tonumber(rst(inData.yh).value) + tonumber(rst(inData.ys).value) - 1;
zys=rst(inData.yh).value + rst(inData.ys).value - 1;
}
if(zys != i and i != 0){
mainForm.lstInfo.add(dirName + " 图片:" + tostring(i)
+ " 数据:" + tostring(zys));
mainForm.lstInfo.ensureVisible(mainForm.lstInfo.count);
}
rst.close();
}
else { //正常分件
//读取表数据
strSQL="Select Sum(" + inData.ys
+ ") From [Sheet1$] Where " + inData.id + "='" + dirName + "'";
rst=cnn.execute(strSQL);
//数据校验,错误则输出
if(rst.fields(0).value != i and i != 0){
mainForm.lstInfo.add(dirName + " 图片:" + tostring(i)
+ " 数据:" + tostring(rst.fields(0).value));
mainForm.lstInfo.ensureVisible(mainForm.lstInfo.count);
}
}
// return true;
}
);
if(mainForm.lstInfo.count<1){
mainForm.btnFJ.disabled=false;
}
mainForm.lstInfo.add("数据校验完成!");
mainForm.statusbar.addItem("数据校验完成!", /*宽度*/);
}
mainForm.show();
return win.loopMessage();
intro.aarido
import win.ui;
/*DSG{{*/
var winform = win.form(text="使用说明";right=479;bottom=575)
winform.add(
edit={cls="static";left=8;top=8;right=472;bottom=568;edge=1;font=LOGFONT(h=-14);multiline=1;z=1}
)
/*}}*/
winform.edit.text=/*
本软件用于档案数字化加工,根据EXCEL文件提供的数据对图片(或
文件)进行分件。
索引字段:通常是 案卷级档号;
排序字段:用于卷内排序,纯数字值,顺序号、件号、页号……;
件名称字段:分件文件夹根据此字段值命名;
页号字段:分件的数据依据;
页数字段:同上;
页号位数:图片(或文件)命名位数,如 0001.jpg 为4位数;
页号前缀:图片(或文件)数字命名前的字符或数字,如图片命名为:
N0001.jpg 填写 ‘N’;
页号后缀:图片(或文件)数字命名后的字符或数字,如图片命名为:
N000100000.jpg 填写 ‘00000’;
后缀名:即文件后缀名,通常为 ‘.jpg’;
一页多件:特殊分件形式,允许一张图片(或文件)分到多个件中;
*/;
winform.show();
win.loopMessage();
return winform;