基于delphi的excel数据导入导出
因为淘宝客户的一个小需求,写了一个“基于delphi 7的excel数据导入导出”小工具。为了抛砖引玉,将这个小工具分享出来。希望对初学者和用得到的朋友有点点小小的帮助。oracle数据库连接,注意中文编码问题。导入excel,可以将values的插入值用“()”、“,”拼接实现批量导入(实例:insert into table(a,b,c) values('aa','bb','cc'),('a1','a2','a3'),('b1','b2','b3')...('c1','c2','c3');
工具技术应用:Delphi 7 + mysql (或者mariaDB 10.3);
数据操作:导入excel、导出为text文件(导出excel雷同导入,可以自己加工一下10分钟搞定);
实现控件:ado:adoConnection连接、adoquery(select查询)、adocommand(SQL操作语句)、其他(按钮、edit、label);
源码:
一、MariaDB数据表SQL脚本:
CREATE TABLE `test` (
`id` INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT,
`code` VARCHAR(16) NOT NULL,
`name` VARCHAR(24) NOT NULL,
`state` INT(1) NOT NULL DEFAULT '1',
`systime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=56
;
二、导入excel代码:
2.1 打开按钮:
if dlgOpen1.Execute then
begin
edt2.Text := dlgOpen1.FileName;
end;
2.2 导入excel按钮:
procedure TToolsFrm.pnl3Click(Sender: TObject);
// uses Comobj; //
// Excel 导入到数据库 //
// bentti 2020.01.01 23:46:11 //
var
ExcelApp:variant;
InserSQL:string;
ResultList:TStringList;
ii,j:integer;
vvOpenSQL,vvSaveSQL:string;
myfloat:double;
begin
ExcelApp:=CreateOleObject('Excel.Application');
ExcelApp.visible:=False;
ExcelApp.workbooks.open(Edt2.Text);
//自适应宽度
ExcelApp.worksheets[1].Cells.EntireColumn.AutoFit; //整个表所有列
j:=2; //假定标题在第一行
with cmdTemp do
begin //修改数据表名、字段名
InserSQL:='insert into test(code,name) values';
ii :=ExcelApp.WorkSheets[1].UsedRange.Rows.Count-1;
vvSaveSQL :='';
while ExcelApp.worksheets[1].cells[j,1].text<>'' do
begin
CommandText := InserSQL + '('''+ExcelApp.worksheets[1].cells[j,1].text +''','''+ExcelApp.worksheets[1].cells[j,2].text +''');' ;
try
cmdTemp.Execute;
Application.ProcessMessages;
except
Application.MessageBox('导入excel球员数据发生错误,请与管理员联系!','提示信息',16)
end;
j:=j+1;
end;
end;
ExcelApp.Activeworkbook.close(false);
ExcelApp.quit;
ExcelApp:=unassigned;
with qryData do
begin
close;
sql.Clear;
sql.Text :='select * from test where state=1 order by systime desc';
Active :=True;
end;
end;
三、导出text文件:
3.1、打开数据:
with qryText do
begin
close;
sql.Clear;
sql.Text :='select * from test where state=1 order by systime desc';
try
Active :=True;
except
Application.MessageBox('打开数据发生错误,请与管理员联系!','提示信息',16)
end;
end;
3.2、设定保存文件路径:
if dlgSave1.Execute then
begin
edt3.Text :=dlgSave1.FileName;
end;
3.3、导出text编码:
procedure TToolsFrm.pnl5Click(Sender: TObject);
var
vOutText:textfile;
vOutData:string;
begin
assignfile(vOutText,edt3.Text);
rewrite(vOutText);
qryText.First ;
while not qryText.Eof do
begin
vOutData:=qryText.Fields[0].AsString +' '+ qryText.Fields[1].AsString ;
writeln(vOutText,vOutData);
qryText.Next ;
end;
closefile(vOutText);
Application.MessageBox('text文件成功导出。','提示信息',48)
end;
源码奉上,有问题留言或者微信:bentti。
基于delphi的excel数据导入导出相关推荐
- java自定义注解实现excel数据导入导出,设置单元格数据验证与生成省市区多列联动效果
本文通过自定义注解实现excel数据导入导出.以及设置excel文件中列数据验证,即用户在excel文件中输入数据时就可以对数据格式验证是否符合,节省了程序中过多的数据验证操作,注解还额外提供了一系列 ...
- 高性能 + 百万级excel数据导入导出
高性能 + 百万级excel数据导入导出 内容介绍 github地址 使用文档地址 安装注意事项 仅以mac举例 ide中提示相关代码 下载demo 内容介绍 [转载]https://learnku. ...
- SpringBoot 整合eazyPoi 4.3.0 Excel数据导入导出(持续更新功能)
目录 依赖 注解用法说明 @ExcelTarget 绑定Id @Excel 用在字段上面 @ExcelCollection 实体代码 Excel导出 正常数量导出(1-2W条) 大数据量导出 多she ...
- 基于NPOI的Excel数据导入
从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...
- java横向导出excel_利用Java进行Excel的数据导入导出
1. 引言 MS 的电子表格(Excel)是Office 的重要成员,是保存统计数据的一种常用格式.在一 个Java 应用中,将一部分数据生成Excel 格式,是与其他系统无缝连接的重要手段.在远程 ...
- C# excel文件导入导出
在C#交流群里,看到很多小伙伴在excel数据导入导出到C#界面上存在疑惑,所以今天专门做了这个主题,希望大家有所收获! 环境:win10+vs2017 界面:主要以演示为主,所以没有做优化,然后主界 ...
- [Java中实现Excel表导入导出]基于easy-poi和EasyExcel两种方式实现
第一种:基于easy-poi实现Excel导入导出 1.导出Excel表格 第一步:在pom文件中导入依赖 <!--基于easy-poi实现Excel导入导出--><dependen ...
- 基于PhalApi的PHPExcel扩展实现数据导入导出
前言: 最近开发一款crm,使用PhalApi框架提供数据接口,要用公共接口来实现各个模块的数据导入导出功能.如果是单独的导入导出(一个模块一个导入导出接口)推荐大家使用 phpoffice/phps ...
- easypoi导出数值型_SpringBoot使用EasyPoi进行数据导入导出Excel(一)
在实际项目开发中,对于Excel的导入导出还是很常见的需求,比如说将数据根据模板批量导入到数据库中,以及将数据库中的数据批量导出陈Excel的形式 现有需求: 下载固定的导入Excel模板 导入Exc ...
最新文章
- iOS Sprite Kit教程之滚动场景
- 这个“老婆生成器”说我有5个前妻...
- BCB中获得RichEdit 默认行间距
- 获得AndroidManifest.xml文件中meta-data的value值
- python中List的sort方法(或者sorted内建函数)的用法
- 写代码水平的几个发展阶段
- Win10 + Python + MXNet + VS2015配置
- cups共享linux打印机_linux入门-映射网络驱动器
- linux安全策略查询代码,Linux多安全策略和动态安全策略框架模块代码分析报告(14)...
- 浅论教材砍压并补联的原则
- [英中双语] Pragmatic Software Development Tips 务实的软件开发提示
- 网络化智能型维修电工电气控制技能实训智能考核装置
- html点击图片后图片移动,移动端点击图片放大图片,可左右切换图片
- 【NOIP practice】BSOJ 3132 卡扎菲 并查集
- 机器学习第四章之逻辑回归模型
- 各大搜索引擎收录地址
- 马云希望下辈子做女人,而我们希望这辈子做马云
- R语言绘制频率直方图
- 谷歌浏览器table不规则表格使用rowspan/colspan导致线条粗细不同
- 什么是领域模型?什么是数据模型
热门文章
- AI炒股:用Claude来分析A股2023年中报业绩预告
- SpringCloud——Nacos下载
- React中的render()
- 领英关闭中国业务领英职场!怎么保住自己的领英账号和好友并继续使用领英搜索开发客户?
- 电脑计算机找不到指定的程序,电脑打开IE浏览器显示找不到应用程序怎么解决...
- 用MATLAB仿真SCARA机器人,报错:未定义与 ‘char‘ 类型的输入参数相对应的函数 ‘Link‘
- 从零开始学黑客:网络黑客新手入门指南(转)
- 华为鸿蒙系统卡片,华为鸿蒙发布会:卡片的设计形态,让人相当触动
- 介绍几款在线传输网站
- Qt学习之自定义搜索框(两种方案)