通过WORD转Sqlite数据库开发手记(1)我们已经了解了如何读取Word里面表格数据。接下来我们将正式开发这个转换工具。
为了做成一个通用转换工具,我们需要让用户输入需要转换的Word文件,并指定转换后的Sqlite数据库保存位置。下面是我设计的UI界面:
需要用到的控件:
1、 一个文件打开控件
2、 一个保存控件
处理用户选择WORD文件的代码段:
procedure TFormMain.FWordFileSelBtnClick(Sender: TObject); begin {需要用户选择一个Word文件} if FWordFileOpenDialog.Execute then begin FWordFileNameEdit.Text := FWordFileOpenDialog.FileName; end; end;
处理用户选择SQLITE文件的代码段:
procedure TFormMain.FSqliteFileSelButtonClick(Sender: TObject); begin {需要用户选择一个Sqlite数据库文件} if FSqliteSaveDialog.Execute then begin FSqliteFileNameEdit.Text := FSqliteSaveDialog.FileName; end; end;
输入的WORD文件和输出的Sqlite数据库文件代码都搞完了,接下来就要搞定转换的代码。先来描述一下整个转换过程的逻辑:
1、 先打开WORD文件
2、 初始化SQLITE数据库
3、 创建存储WORD数据需要的表
4、 循环处理:读一条记录并保存到SQLITE数据库中
5、 关闭先前打开的WORD文件
6、 关闭SQLITE数据库
从第4步我们可以看出,有一个循环过程,我们可以一直循环处理等整个处理都完成后跳出一个提示框提示用户转换完成了,这样显然在用户体验上有些差,用户不知道整个转换过程的进度,所以我们这里需要先来设计个进度汇报UI。
进度汇报UI如下图:
显示进度汇报UI代码:
procedure ShowWaitFrom(arg_runNotify: TNotifyEvent); begin if g_waitFrm = nil then begin g_waitFrm := TfrmWait.Create(nil); end; g_waitFrm.m_clInfoLabel.Top := 17; g_waitFrm.m_clInfoLabel.Caption := ''; g_waitFrm.ProgressBar1.Visible := false; g_waitFrm.fnRunEvent := arg_runNotify; g_waitFrm.OnShowForm(); end;
更新进度信息代码:
procedure TfrmWait.setInfo(const Value: string); begin m_clInfoLabel.Caption := Value; Application.ProcessMessages; end;
更新进度条代码:
procedure OnSetWaitStep(arg_value:Integer); begin if g_waitFrm <> nil then begin g_waitFrm.ProgressBar1.Position := arg_value; end; end;
进度汇报代码搞定后,我们就可以开始正式进入转换代码的开发了。
共有0个评论 我要评论»
网友回复/评论仅代表其个人看法,并不表明本社区同意其观点或证实其描述。
1.不欢迎无意义的回复/评论和类似“顶”、“沙发”之类没有营养的文字
如果只是想简单的表个态,请点 有用无用支持反对 等按钮
2.发言之前请再仔细看一遍文章,或许是您遗漏、误解了,理性讨论、切莫乱喷
3.严禁发布违法、违规的信息,请勿到处招贴广告、发布软文;
4.如果您发现自己的回复/评论不见了,请参考以上3条
5.不停制造违规、垃圾信息的,账户将被禁止