Delphi常用的Excel操作
以下是我在Delphi中用过的Excel操作
ExlApp:=CreateOLEObject('Excel.Application'); //创建对象
ExlApp.Visible :=False;// True; //是否显示
ExlApp.DisplayAlerts := False; //是否显示警告
ExlApp.Caption:=aTitle; //设置标题
ExlApp.Workbooks.Open(FileName); // 打开文件
ExlApp.Workbooks[1].Sheets[1].Activate ; //设置哪个工作表为激活状态
ExlApp.Workbooks[1].Title:='报价单';
将行、列数转为坐标名,如 1行3列 转换成 C1
sTemp:=Char(iCol+64);
Result:=Format('%s%d',[sTemp,iRow]);
//---------------------------------------合并相同的列
iStart:=iDataStart; //从第几行开始
iCount:=0; //要合并的数量
for i:=iDataStart to ExlApp.ActiveSheet.UsedRange.Rows.Count do //逐行找相同的列
begin
sValue:=Trim(VarToStr(ExlApp.ActiveSheet.Cells[iStart,iIndex].Value)); //起始行的值
sTemp:=Trim(VarToStr(ExlApp.ActiveSheet.Cells[i,iIndex].Value));//当前行的值
sNO:=ExlApp.ActiveSheet.Cells[i,1].Value;
if (sValue <> sTemp) then //发生变化,要合并前面的列
begin
R1:=GetCellName(iStart,iIndex);
R2:=GetCellName(i-1,iIndex); //i-1就是合并之前的行,这行不算
ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R2])].Merge; //合并行
ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R2])].Borders[1].Weight := 2; //设框格线
ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R2])].Borders[2].Weight := 2;
ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R2])].Borders[3].Weight := 2;
ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R2])].Borders[4].Weight := 2;
iStart:=i;
iCount:=1;
end
else if (TryStrToInt(sNO,iTemp)) and (iTemp>0) then
begin
Inc(iCount); //如果起始和当前的值相同,要合并的数量增加
end;
end;
if iCount>0 then //最后还有要合并的,继续合并
begin
R1:=GetCellName(iStart,iIndex);
R2:=GetCellName(iStart+iCount-1,iIndex);
ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R2])].Merge; //R1和R2之前的CELL进行合并
ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R2])].Borders[1].Weight := 2; //设框格线
ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R2])].Borders[2].Weight := 2;
ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R2])].Borders[3].Weight := 2;
ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R2])].Borders[4].Weight := 2;
end;
ExlApp.ActiveSheet.columns[i].Hidden:=True; //隐藏列
ExlApp.ActiveSheet.Columns[i].Delete; //删除列
ExlApp.ActiveSheet.Cells[4,2].Value:=FieldByName('cCusName').AsString; //赋值
sTemp:=ExlApp.ActiveSheet.Cells[iDataStart,1].Value; //取值
ExlApp.ActiveSheet.Cells[5,10].NumberFormat:='@';//设置单元格的格式,这是文字型
ExlApp.ActiveSheet.Cells[5,10].NumberFormat:='#0.####';//设置单元格的格式,这是数字型
ExlApp.ActiveSheet.Cells[5,10].NumberFormat:='$#0.####';//设置单元格的格式,这是货币型
ExlApp.ActiveSheet.Columns[11].EntireColumn.AutoFit; //自动调整列宽
ExlApp.ActiveSheet.Rows[3].Insert; //插入一行
ExlApp.ActiveSheet.UsedRange.Rows.Count //总行数,列也一样
//---------------------------------------图片操作
var
vStream:TADOBlobStream;
sCol,tmpFile,vPicType,R1:string;
i,iCol:Integer;
picture,workRange : OleVariant;
vName:string;
begin
vStream:=TADOBlobStream.Create(TBlobField(Query001_2.FieldByName('Pics')),bmRead); 将图片数据写入流
if vStream.Size=0 then //没图片数据
begin
exit;
end;
vPicType:=CheckImgType(vStream); //判断图片类型
vStream.Position:=0; //指向流的开头
tmpFile:=GV_TempPath+PubData1.GetGUIDString+'.'+vPicType; //生成临时文件名
TBlobField(Query001_2.FieldByName('Pics')).SaveToFile(tmpFile); //流数据保存到临时文件里
ExlApp.ActiveSheet.Columns[iCol].ColumnWidth :=15; //设置列宽
R1:=GetCellName(iRow,iCol);
workRange:= ExlApp.ActiveSheet.Range[Format('%s:%s',[R1,R1])]; //设定范围,此处只是一格
workRange.Select;
picture := ExlApp.ActiveSheet.Shapes.AddPicture(tmpFile,true,true,workRange.left + 1,workRange.top + 1,workRange.width - 2,workRange.height - 2); //插入图片,前面2个true不知道有什么用,后面分别是left,top,width,height
picture := Unassigned; //释放
workRange:=Unassigned;
DeleteFile(tmpFile); //删除临时文件
vStream.Free;
try
iTemp:=1; //从第1个算起
for i:=1 to 10000 do //因为无法访问shapes的数量,所以这里设大点
begin
if VarIsEmpty(ExlApp.ActiveSheet.Shapes.Item(iTemp)) then //判断第N个存在就删除
begin
Inc(iTemp);
Break;
end else
begin
if ExlApp.ActiveSheet.Shapes.Item(iTemp).Width<500 then //这是自己定义的删除条件
begin
ExlApp.ActiveSheet.Shapes.Item(iTemp).Delete; //删除第N个,后面的就会变成第N个,如此循环
end else
inc(iTemp); //不用删除就判断第N+1个
end;
end;
except
end;
end;
//---------------------------------------退出
try
ExlApp.WorkBooks.Close; //关闭工作薄
ExlApp.Quit; //退出
ExlApp:=unassigned; //关闭线程,不然在任务表里还会存在
Result:=True;
except
Result:=False;
end;
Delphi常用的Excel操作相关推荐
- 常用的excel操作小技巧--自己用的,仅供记录
1. 如何做下拉菜单进行选择输入 选择单元格 点击Date→Date Validation→ Allow中选择List→Source中添加你想要的列表选项→ok 2.不同数字/文本 的填充区域,显示 ...
- 阿里巴巴开源的Excel操作神器!
前提 导出数据到Excel是非常常见的后端需求之一,今天来推荐一款阿里出品的Excel操作神器:EasyExcel.EasyExcel从其依赖树来看是对apache-poi的封装,笔者从开始接触Exc ...
- Delphi 常用API 函数
Delphi 常用API 函数 AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小 AnyPopup 判断屏幕上是否存在任何弹出式窗口 ArrangeIconic ...
- 中考计算机考试exce,中考信息技术EXCEL操作.doc
中考信息技术EXCEL操作 EXCEL操作 合并单元格 第一种办法: 选中需要合并的几个单元格 选择工具栏中的图标: 第二种办法: 选中需要合并的几个单元格 选择:格式 单元格 跳出如图所示 设置对齐 ...
- 数据转换excel操作 Microsoft.Office.Interop.Excel.dll的使用
引用:http://www.cnblogs.com/lanjun/archive/2012/06/17/2552920.html 先说说题外话,前段时间近一个月,我一直在做单据导入功能,其中就涉及到E ...
- 【转载】Excel操作 Microsoft.Office.Interop.Excel.dll的使用
http://www.cnblogs.com/lanjun/archive/2012/06/17/2552920.html 先说说题外话,前段时间近一个月,我一直在做单据导入功能,其中就涉及到Exce ...
- DELPHI常用函数集及简要范例 3
##DiskFree, DiskSize Example ----------------------------------------------------------------------- ...
- java poi row cell,使用POI进行Excel操作的总结一——创建Workbook,Sheet,Row以及Cell
前段时间,看在其他的网站上给出Excel文档的导入与导出操作,感觉很酷的样子,所以就学习了一下如何使用POI进行Excel的操作,现在对之前的学习过程进行一个总结. 一.现在普遍使用的Excel文档有 ...
- 数据处理中常用的Excel基本操作及函数
数据处理中常用的Excel基本操作及函数-生信基础版 文章目录 数据处理中常用的Excel基本操作及函数-生信基础版 第一部分:键盘快捷键操作 一.CTRL系列 二.其他系列 第二部分:Excel函数 ...
最新文章
- Python2 编码问题分析
- mysql获取两个表中日期字段的最小差值
- 获取当前经纬度php腾讯地图,PHP腾讯地图经纬度转百度地图经纬度
- 【MM模块】 Goods Receipt 收货 4
- Tomcat源码调试环境搭建
- 下单问题分析及解决方式
- Request_获取请求参数通用方式演示
- 使用Echarts制作散点图(Excel导入数据方式)
- Vue.js学习笔记(一) - 起步
- 拨开字符编码的迷雾--字符编码转换
- Pattern Recognition and Machine Learning(模式识别与机器学习)第一章导读
- 计算机主机开机 风扇没有转动,电脑开机黑屏,电源风扇和CPU风扇都正常转动,但是显示器无任何显示,正常的一声滴,萤幕什么都不显示...
- 微信小程序如何跳转到tabbar页面-陆大湿
- dest在C语言什么作用,目前最全面的dest答疑问题及相关回答
- python转pyd
- 用递归+缓存求阶乘和排列组合数
- sqlserver2014数据导出与导入
- STM32F3 GPIO的八种模式及工作原理
- React 动效 Framer motion,给你的页面添加一点动感
- redis客户端predis介绍
热门文章
- Java简简单单抢红包小程序(代码)
- 中旅投资计划战略入股开元森泊,成为其第二大股东
- SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to
- 总体标准差、样本标准差、标准误差
- 【GitHub】GitHub上值得收藏的100个精选前端项目!
- PKCS#11标准解读-Cryptoki库如何工作
- d3.js 实现企业图谱(基于vue)
- oh-my-zsh安装教程
- SPA(单页面应用)总结
- 跑象科技CEO 卢山巍:大数据具有“黑魔法”魅力