论文部分内容阅读
摘 要:本文用C 设计了一种工具软件,将现有的Excel表的信息,通过该软件导入到指定的DBF注册表里,省去了重新输入的巨大工作量。
关键词:Excel表 VFP C
中图分类号:TP311.52 文献标识码:B 文章编号:1673-8454(2008)11-0058-03
在office办公软件在我国普及的今天,基础信息往往是以Excel表的形式存储,但Excel表不能实现信息化的复杂管理,于是就要用VFP开发数据管理软件,这就要求将现有的Excel表的数据导入到VFP开发的管理系统的数据表中,而市场上这种转换工具软件又很少,而且不能满足千差万别Excel格式转换到指定的DBF表的要求,基于此,笔者研究出一种软件解决此类问题。
一、技术实现路线
1.不同版本的Excel表的存储格式不同,要直接转换到指定的DBF表下,要进行复杂的重复代码编程,以致广大用户无法实现自主转换,因此开发一个通用性的转换工具软件是最终的目标。
2.要想作成通用的转换工具软件,必须首先将Excel表转换为文本文件(带制表分隔符),文本文件是最基础的文件形式,读取不需要任何中间的动态链接库等复杂的调用,该文本文件的关键是以制表分隔符号ASC码9作为每列的分隔标志,以ASC码10和13作为每一行的换行符号,这就为转化工具的开发奠定了基础。
3.实现Excel表转换必须满足如下要求:①必须去掉带有合并单元格的内容;②每列内容必须左对齐;③每单元格内容不能折行显示;④删除空列内容;⑤从右下角开始选取转换的表内容;⑥选择“文件”-“另存为”-存储类型为“文本文件(制表分隔符)(*.txt)”。
4.创建独立的DBF数据库类,笔者用C 经过长期剖析DBF各个版本的底层代码、存储方式、结构体构成等等技术细节,创建了DBF类,对字段构成、数据存储、记录的读取,都有完整的函数,为转换奠定了基础。
5.文本文件的读取,定义一个buffer字符型缓冲变量,ASC码10作为换行符号读到buffer里,然后以ASC码12作为提取每个字串的分隔符号,提取字符串,然后通过DBF数据库的写入函数,将字串写入到指定记录的对应字段里。
6.必须设计一个通用完整的工具软件界面,进行通用的开发,为广大用户灵活使用。
二、代码实现介绍
1.这个事件函数是导入文本文件,并自动识别文本分隔符号,将第一行字段按照分隔符号将内容显示到列表框里,为和DBF字段建立对应关系做准备。
void __fastcall TForm1::Button2Click(TObject *Sender)
{String name,dir0;
//下面代码是获取当前exe文件名和路径
name=ExpandFileName(Application->ExeName);
dir0=ExtractFilePath(name);
Form1->OpenDialog2->InitialDir=dir0;
struct ffblk fblk;
if(Form1->OpenDialog2->Execute())//若打开文本文件
{Form1->ListBox2->Clear();
String txtc=Form1->OpenDialog2->FileName;
strcpy(txtp,txtc.c_str());
String filename=ExtractFileName(txtp);
dir0=dir0 filename;
int one=findfirst(dir0.c_str(),
关键词:Excel表 VFP C
中图分类号:TP311.52 文献标识码:B 文章编号:1673-8454(2008)11-0058-03
在office办公软件在我国普及的今天,基础信息往往是以Excel表的形式存储,但Excel表不能实现信息化的复杂管理,于是就要用VFP开发数据管理软件,这就要求将现有的Excel表的数据导入到VFP开发的管理系统的数据表中,而市场上这种转换工具软件又很少,而且不能满足千差万别Excel格式转换到指定的DBF表的要求,基于此,笔者研究出一种软件解决此类问题。
一、技术实现路线
1.不同版本的Excel表的存储格式不同,要直接转换到指定的DBF表下,要进行复杂的重复代码编程,以致广大用户无法实现自主转换,因此开发一个通用性的转换工具软件是最终的目标。
2.要想作成通用的转换工具软件,必须首先将Excel表转换为文本文件(带制表分隔符),文本文件是最基础的文件形式,读取不需要任何中间的动态链接库等复杂的调用,该文本文件的关键是以制表分隔符号ASC码9作为每列的分隔标志,以ASC码10和13作为每一行的换行符号,这就为转化工具的开发奠定了基础。
3.实现Excel表转换必须满足如下要求:①必须去掉带有合并单元格的内容;②每列内容必须左对齐;③每单元格内容不能折行显示;④删除空列内容;⑤从右下角开始选取转换的表内容;⑥选择“文件”-“另存为”-存储类型为“文本文件(制表分隔符)(*.txt)”。
4.创建独立的DBF数据库类,笔者用C 经过长期剖析DBF各个版本的底层代码、存储方式、结构体构成等等技术细节,创建了DBF类,对字段构成、数据存储、记录的读取,都有完整的函数,为转换奠定了基础。
5.文本文件的读取,定义一个buffer字符型缓冲变量,ASC码10作为换行符号读到buffer里,然后以ASC码12作为提取每个字串的分隔符号,提取字符串,然后通过DBF数据库的写入函数,将字串写入到指定记录的对应字段里。
6.必须设计一个通用完整的工具软件界面,进行通用的开发,为广大用户灵活使用。
二、代码实现介绍
1.这个事件函数是导入文本文件,并自动识别文本分隔符号,将第一行字段按照分隔符号将内容显示到列表框里,为和DBF字段建立对应关系做准备。
void __fastcall TForm1::Button2Click(TObject *Sender)
{String name,dir0;
//下面代码是获取当前exe文件名和路径
name=ExpandFileName(Application->ExeName);
dir0=ExtractFilePath(name);
Form1->OpenDialog2->InitialDir=dir0;
struct ffblk fblk;
if(Form1->OpenDialog2->Execute())//若打开文本文件
{Form1->ListBox2->Clear();
String txtc=Form1->OpenDialog2->FileName;
strcpy(txtp,txtc.c_str());
String filename=ExtractFileName(txtp);
dir0=dir0 filename;
int one=findfirst(dir0.c_str(),