向已存Excel文件中导入数据小结

其实前面提到的导出数据到Excel文件中的写入流方法都是新建状态下的Excel文件,重新定位文件头和文件尾,会的损坏原文件。

假如有一个已存Excel文件xlsFile.xls中,已有其它数据,只需向其中添加一引起数据,显然在前几种方法难解决。

 

现有办法解决,效率相对还过得去(还可以向其中写Excel公式):

大体方法以描述:定义一个 lst :TstringList ,向其中添加要写入Excel文件的内容。每列以#9表格控制符结尾。

然后把数据先写到剪切板上 clipboard.astext := lst.Text;

然后打开已存xlsFile.xls,定位要写入数据的cell,shtSheet.Paste;

 

 

如下代码:

var

   省。。。。

 

tmpstr:= ExtractFilePath(Application.ExeName) +  '漂染车间'+exdtdtProductDate.Text+'生产排程.xls';

  try
    exclplctnApp.Connect;
  except
    on E: Exception do
    begin
      E.Message := '无法连接Excel';
      Raise;
    end;
  end;
  exclplctnApp.Visible[0] := False;

  exclwrkbkBook.ConnectTo(exclplctnApp.Workbooks.Open(tmpstr,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0));
  exclwrkshtSheet.ConnectTo(exclwrkbkBook.Sheets[1] as _Worksheet);

  (exclplctnApp.Worksheets.Item[1] as _WorkSheet).Activate(0);//激活worksheet
  //下面写入数据

  lst := TStringList.Create;
  try
    try
      dsTastList.DisableControls;
      dsTastList.First;
      n:= 21;
      for i:= 1 to dsTastList.RecordCount  do
      begin
        s_tmp := EmptyStr;

        tmpstr:= '=IF(O22="**",F22&K22&O22&N22,IF(OR(K22="黑色",K22="白色"'+
        ',K22="原纱克"),F22&K22,IF(OR(K22<>"黑色",K22<>"白色",K22<>"原纱克"),F22&K22&O22,"")))';
        tmpstr:= StringReplace(tmpstr,'22',IntToStr(i+n),[rfReplaceAll]);
        s_tmp := s_tmp + tmpstr + #9;  //名称引用

        tmpstr:= '=IF(G22="车间自排",F22&G22&K22,IF(D22<>"",F22&G22,""))';
        tmpstr:= StringReplace(tmpstr,'22',IntToStr(i+n),[rfReplaceAll]);
        s_tmp := s_tmp + tmpstr + #9;//缸台引用

        tmpstr:= '=O22&S22';
        tmpstr:= StringReplace(tmpstr,'22',IntToStr(i+n),[rfReplaceAll]);
        s_tmp := s_tmp + tmpstr + #9;//颜色引用

        tmpstr:= '=IF(OR(I22<=0,I22=""),"",IF(AND(LEFT(Q22,2)="TD",I22<0.8),"小缸",'+
        'IF(AND(LEFT(Q22,2)<>"TD",I22<2.5),"401",IF((I22<10.5),"301",IF((I22<31.5)'+
        ',"107",IF((I22<42),"106",IF((I22<63),"105",IF((I22<73.5),"205","104"))))))))';
        tmpstr:= StringReplace(tmpstr,'22',IntToStr(i+n),[rfReplaceAll]);
        s_tmp := s_tmp + tmpstr+ #9;  //缸台整理

        tmpstr:= '=IF(D22<>"",1,"")';
        tmpstr:= StringReplace(tmpstr,'22',IntToStr(i+n),[rfReplaceAll]);
        s_tmp := s_tmp + tmpstr+ #9; //轮数

        s_tmp := s_tmp + dsTastList.FieldByName('WD_P_DATE').AsString + #9; //生产日期

        tmpstr:= '=IF(AND(I22<>"")*OR(K22="黑色",K22="白色",K22="原纱克"),"车间自排",'+
        'IF(D22<>"104",D22,IF(I22<100,"104",IF(I22<220,"108",IF(I22<320,"103",'+
        'IF(I22<440,"102",IF(I22<640,"101","分批")))))))';
        tmpstr:= StringReplace(tmpstr,'22',IntToStr(i+n),[rfReplaceAll]);
        s_tmp := s_tmp + tmpstr+ #9;//生产缸台

        tmpstr:= '=IF(AND(O22="星韵",A22<>A21),SUMIF(A:A,F22&K22&O22&N22,T:T),'+
        'IF(AND(A22<>A21)*OR(K22="黑色",K22="白色",K22="原纱克"),SUMIF(A:A,'+
        'F22&K22,T:T),IF(A22<>A21,SUMIF(A:A,F22&K22&O22,T:T),"")))';
        tmpstr:= StringReplace(tmpstr,'22',IntToStr(i+n),[rfReplaceAll]);
        tmpstr:= StringReplace(tmpstr,'21',IntToStr(i+n-1),[rfReplaceAll]);
        s_tmp := s_tmp + tmpstr+ #9;//生产数量

        tmpstr:= '=IF(AND(O22="星韵",A22<>A21),SUMIF(A:A,F22&K22&O22&N22,J:J),'+
        'IF(AND(A22<>A21)*OR(K22="黑色",K22="白色",K22="原纱克"),'+
        'SUMIF(A:A,F22&K22,J:J),IF(A22<>A21,SUMIF(A:A,F22&K22&O22,J:J),"")))';
        tmpstr:= StringReplace(tmpstr,'22',IntToStr(i+n),[rfReplaceAll]);
        tmpstr:= StringReplace(tmpstr,'21',IntToStr(i+n-1),[rfReplaceAll]);
        s_tmp := s_tmp + tmpstr+ #9;  //引用数量

        tmpstr:= '=IF(LEFT(Q22,2)="TD",T22*1.5,T22)';
        tmpstr:= StringReplace(tmpstr,'22',IntToStr(i+n),[rfReplaceAll]);
        s_tmp := s_tmp + tmpstr+ #9; //未完成数

 

        s_tmp := s_tmp + dsTastList.FieldByName('C_COLOR_Z').AsString + #9; //类别
        s_tmp := s_tmp + dsTastList.FieldByName('S_S_TYPE').AsString + #9; //类别
        s_tmp := s_tmp + dsTastList.FieldByName('WH_NO').AsString + #9; //生产单号
        s_tmp := s_tmp + dsTastList.FieldByName('WD_S_NO').AsString + #9; //订单号
        s_tmp := s_tmp + dsTastList.FieldByName('WD_CV_NAME').AsString + #9; //客户
        s_tmp := s_tmp + dsTastList.FieldByName('WH_URGENCY').AsString + #9; //紧急程度
        s_tmp := s_tmp + dsTastList.FieldByName('WD_P_CODE').AsString + #9; //物料编号
        s_tmp := s_tmp + dsTastList.FieldByName('WD_P_NAME').AsString + #9; //物料名称
        s_tmp := s_tmp + dsTastList.FieldByName('WD_COL_NAME').AsString + #9; //颜色
        s_tmp := s_tmp + dsTastList.FieldByName('WD_S_QTY').AsString + #9; //订单数量
        s_tmp := s_tmp + dsTastList.FieldByName('WD_MUST_IN_QTY').AsString + #9; //指定入库
        s_tmp := s_tmp + dsTastList.FieldByName('WD_U_CODE').AsString+ #9; //主单位
        s_tmp := s_tmp + dsTastList.FieldByName('WD_U2_QTY').AsString + #9; //次数量
        s_tmp := s_tmp + dsTastList.FieldByName('WD_U2_CODE').AsString + #9; //次单位
        s_tmp := s_tmp + dsTastList.FieldByName('WD_YQ_DATE').AsString+ #9; //生产交期
        s_tmp := s_tmp + dsTastList.FieldByName('WD_JQ_IS_WAIT').AsString+ #9; //交期待定
        s_tmp := s_tmp + dsTastList.FieldByName('S_STATUS').AsString+ #9; //状态
        s_tmp := s_tmp + DateToStr(Now) + #9;  //处理日期

        tmpstr:= '=IF(A22="","",VLOOKUP(A22,$A$21:$G$2360,7,FALSE))';
        tmpstr:= StringReplace(tmpstr,'22',IntToStr(i+n),[rfReplaceAll]);
        s_tmp := s_tmp + tmpstr+ #9; //缸台号

        s_tmp := s_tmp +  '' + #9; //车间生产反馈

        lst.Add(s_tmp);

        dsTastList.Next;
      end;

      if lst.Count > 0 then
      begin
        clipboard.astext := lst.Text;

        exclwrkshtSheet.Range['A22','A22'].Select;
        exclwrkshtSheet.Paste;
        Clipboard.Clear;
        exclplctnApp.Visible[0] := True;
      end;
    except
      exclplctnApp.Workbooks.Close(0);
      exclplctnApp.Disconnect;//关闭Excel
      exclplctnApp.Quit;
    end;
  finally
    //exclplctnApp.Columns.AutoFit;
    dsTastList.EnableControls;
    exclplctnApp.Save;
  end;

微服务 Spring Boot Mybatis-Plus 整合 EasyPOI 实现 Excel 一对多 导入 Spring Boot 如何实现 Excel 的一对多 导入? 一篇文章搞定! 阅读详情

相关推荐

Android 开发实战:从零到一集成 espeak-ng 实现中文离线 TTS(无需账号开箱即用)

本文详细介绍了如何在 Android 项目中集成 espeak-ng,实现中文离线语音播报。通过下载 so 库、编写 Java 接口、封装管理类,开发者可快速构建无需账号的 TTS 功能。文章覆盖从零到一的开发步骤、调试技巧及性能优化,适合中高级 Android 开发者参考。

全栈 3317

matlab:Excel文件数据的导入及导出

前言因为这段时间在用matlab处理数据,把Excel表格的数据导入matlab中然后进行相关的处理,不得不说还是很方便的,如果一个数据一个数据的修改或者输入就太不应该了,这里我就简单说明一下怎么导入及修改。实现导入数据 首先我们应该准备一个Excel文件,比如下面的文件:下面我们就把这个文件放在matlab的工作路径,如果你没有修改路径的话,那么默认的就是你matlab安装目录的下的bin目录,如

ProgramChangesWorld的专栏 3万+

Unity3d 编译发布到安卓平台时出现的问题集

环境搭建好了,android SDK也有了,但导出的时候提示Error building Player: Win32Exception: ApplicationName='java.exe'....... 国内好像没看到解决方法。在Unity3d的论坛里面看到一个解决方法,把C:\windows\system32\java.exe复制到C:\Windows\SysWOW64里面,我这里就解决

erictang01的专栏 1773

学习日记3:Qt将excel文件导入MySQL数据库,tableview数据导出至excel文件

本文使用了QAxObject,QXlsx,以及Mysql。实现三种功能:点击导入按钮可将指定的excel文件中的所有sheet导入MySQL中,一个sheet一张表;数据在tableview发生改变后,可导出成excel文件;将excel文件内容直接显示到tableview上。

LaughOutLoud_x的博客 3295

OnePose++: Keypoint-Free One-Shot Object Pose Estimation without CAD Models

算法:首先采用LoFTR的细匹配模块,将粗匹配点周围的小窗口内,通过对比特征找到最相似的位置,细化当前特征点的位置。算法:PnP算法,利用3D点和2D投影点的对应关系,计算相机相对于物体的6D姿态(位置朝向)。算法:使用COLMAP,对2D粗匹配对(不依赖传统关键点匹配)进行特征轨迹计算并生成半稠密点云,每个3D点包含坐标和对应的2D投影点。算法:LoFTR粗匹配模块,将每一个像素点视为伪关键点,生成半稠密的2D匹配对。输入:优化后的3D、当前视图的2D特征点。输出:粗半稠密点云以及物体的特征轨迹。

雨落倾城的博客 885

pi-coding-agent 完整详解

pi-coding-agent是一个由Mario Zechner开发的专业AI编程助手,基于Node.js和TypeScript构建。核心功能包括:1)多级思考模式(ThinkingLevel),从none到ultra控制推理深度;2)对话压缩(compaction)管理长对话记忆;3)WebSocket实时通信支持流式交互。该智能体支持代码生成、调试、重构等专业编程任务,采用AI Agent架构,具备工具调用和多轮记忆能力。项目结构通常包含server、agent、config等模块,可通过二次开发扩展功

大坡3D软件开发 2413

C# 实现格式化文本导入到Excel

在一些导入功能里,甲方经常会给我们一些格式化的文本,类似 CSV 那样的纯文本。比如有关质量监督的标准文件(如国家标准、地方标准、企业标准等),还有一此国际标准文件等等。提供给我们的这些文件是文件尺寸比较大的纯文本文件,文件内容是格式化的文本,具有规律的分隔字符。Excel 本身提供有导入文本文件的功能,但由于标准制定和发布是比较频繁,每次的导入与整理还是比较耗时的,因些实现文本文件导入到 Excel 的功能可以更快速的解决重复劳动和错误,实现流程自动化的一环。

初九之潜龙勿用 2736

【WRF安装】WRF环境配置移植详细说明

【WRF安装】WRF环境配置移植详细说明

WW、forever的博客 819

【ArcGIS教程】(2)ArcMap中如何导入外部Excel属性数据呢?

ArcMap中如何导入外部Excel属性数据

中国科学数据网 1万+

qwen2vl ValueError: Image features and image tokens do not match: tokens: 568, features 600

本文介绍了一个用于计算多模态数据集中样本token数量的Python工具,特别针对包含文本和图像的Qwen2-VL模型数据集。

q742971636的博客 1012

MobSF-v3源代码分析(一)

移动安全框架(MobSF)是一种自动化的移动应用程序(Android/iOS/Windows)测试框架,能够执行静态、动态和恶意软件分析。 它可用于Android、iOS和Windows移动应用程序的有效和快速安全分析,并支持二进制文件(APK,IPA和APPX)和压缩源代码。 MobSF可以在运行时为Android应用程序进行动态应用程序测试,并具有由CapFuzz(一种特定于Web API的安全扫描程序)提供支持的Web API模糊测试。MobSF旨在使您的CI/CD或DevSecOps管道集成无缝。

武天旭的博客 8960

dbeaver导入excel文件_python 数据导入、导出

python 数据导入、导出--学习导入csv、txt、excel文件学习笔记导入csv文件import pandas as pddata=pd.read_csv(filepath_or_buffer,sep=',',names=None,engine=None,encoding=None,na_values=None)参数及说明filepath_or_buffer文件路径或输入对象se...

weixin_39625429的博客 1964

【CAN总线测试】——使用VH6501 进行Busoff快慢恢复测试

即在IDBase中填标准帧11位二进制ID,如果不满11位,高位补零,凑齐11位,并将下方CurrTriggerField设置干扰前一位AckSlot位,Triggeroffset设置为0。首先确认环境支持VN6501,6501硬件连接成功后,工程的小闪电是正常黄色状态,若是灰色证明缺少License,或者软件安装环境不正确。填写干扰报文ID、干扰位置 注意这里的干扰位置是实际干扰的前一位,TriggerOffset表示偏移量,可以干扰某个字节的具体位.找到并打开Panel后,开启工程,并且配置面板。

LOVE135149的博客 5629

Navicat导入excel的xlsx文件提示无法打开文件

navicat,Navicat for MySQL导入时显示如下信息(无法打开文件...): 解决方案: 1.打开excel文件另存为.xls或者.csv文件,然后再选择对应的格式导入试试。(不建议了,方案3比较好) 如果导入CSV乱码,必须要使用10008(MAC-Simplified Chinese GB 2312)这个编码格式才可以 2.有人说打开excel表导入就成功(我的不行...

鱼儿眼中的海 4万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

PHP导入导出Excel方法小结

最近因项目需要,需要开发一个模块,把系统中的一些数据导出成Excel,修改后再导回系统。就趁机对这个研究了一番,下面进行一些总结。基本上导出的文件分为两种:1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已。修改这种文件后再保存,通常会提示你是否要转换成Excel文件。优点:简单。缺点:难以生成格式,如果用来导入需要自己分别编写相应的程序

phphot 2万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

导入导出数据语句小结

/*  导出到excelEXEC master..xp_cmdshell bcp SettleDB.dbo.shanghu out c:/temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P"" /*  导入ExcelSELECT * FROM OpenDataSource( Microsoft.Jet.OLEDB.4.0,  Data

『 李天平的博客 』 3150

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

easypoi导入excel文件列名相同的处理方案

Easypoi是什么 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没接触过poi的人员,就可以方便的写出Excel导出、Excel模板导出、Excel导入、Word模板导出,通过简单的注解和模板语言(熟悉的表达式fe语法),完成以前复杂的写法 开源地址:https://gitee.com/lemur/easypoi 独特的功能 基于注解的导入导出,修改注解就可以修改Excel 支持常用的样式自定义 基于map可以灵活定义的表头字段 支持一堆多的导出,导入 支持模板的导出,一些常见的标签

小狐狸和小兔子 3862

PHP导入导出Excel的方法小结

最近因项目需要,需要开发一个模块,把系统中的一些数据导出成Excel,修改后再导回系统。就趁机对这个研究了一番,下面进行一些总结。基本上导出的文件分为两种:1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已。修改这种文件后再保存,通常会提示你是否要转换成Excel文件。优点:简单。缺点:难以生成格式,如果用来导入需要自己分别编写相应的程序

phphot 3385

Vue实现导入Excel功能

1.前端主导实现步骤 第一步,点击页面上的导入按钮,读入Excel文件 利用插件完成。 第二步,按照后端的要求对数据格式加工,转成他们需要的格式 需要自己写逻辑。 第三步,通过后端接口,将数据通过ajax发回去 调接口,常规操作。 简而言之:前端读excel文件,修改文件格式,调接口 2.实现读入Excel文件 注:此步骤就可实现前端导入功能。如对修改格式有兴趣,可以继续看第三步。 概括:复制代码到自己的文件夹下,下载必需的插件。 2.1 使用的是elementUI提供的vue-.

接着奏乐接着舞的博客 4561

POI总结-java读取写入excel文件(读取excel并导入数据库-读取数据库数据并写入excel)

POI包结构 HSSF - 读写Microsoft Excel XLS格式 07office以前的版本 XSSF - 读写Microsoft Excel OOXML XLSX格式 07office以后的版本 HWPF- 读写Microsoft Word DOC格式 针对的word文档 HSLF - 读写Micorsoft PowerPoint格式 创建一个maven项目 先导入POI相关的第三方jar包 <dependency> <groupId>org.apac

programmer_trip的博客 4507

【ArcGIS教程】ArcMap中如何导入外部Excel属性数据呢?

言:在使用ArcGIS做某些分析是经常需要一些外部的属性数据,比如本文所使用的全国各省份的人口、GDP数据。 例如现在我们只有全国各省的shp面数据,其中并不包含我们想要某些的属性数据,比如人口、GDP等等。这时候就需要从外部导入这些数据,而最常见的方式就是导入外部EXCEL数据。如何进行操作呢?慢慢来看嘛!

1788

苍穹外卖12 (Apache POI操作 Excel 文件,导入工作台代码,导出运营数据Excel报表)

Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件。Apache POI 的应用场景:银行网银系统导出交易明细各种业务系统导出Excel报表批量导入业务数据。

qq_1424674116的博客 1369

excel导入mysql命令行_使用命令行将Excel数据表导入Mysql中的方法小结

从Excel数据表导入MySQL,已经做过好几次了,但每次都会碰到各种问题:invalid utf8 character string, data too long, ...,浪费了不少时间为了提高效率,是时候指定一个数据导入的SOP了:1.准备.txt文件1.1将要导入的数据(不含表头)从工作表复制、粘贴到一个新建的Excel数据表中(避免污染源数据)1.2 粘贴时注意:使用右键paste a...

weixin_33178459的博客 909

easypoi 表头数据导入_Java中easypoi导入excel文件列名相同的处理方案

Easypoi是什么Easypoi 功能如同名字easy,主打的功能就是容易,让一个没接触过poi的人员,就可以方便的写出Excel导出、Excel模板导出、Excel导入、Word模板导出,通过简单的注解和模板语言(熟悉的表达式fe语法),完成以前复杂的写法独特的功能基于注解的导入导出,修改注解就可以修改Excel支持常用的样式自定义基于map可以灵活定义的表头字段支持一堆多的导出,导入支持模板...

weixin_39654823的博客 1216

python将excel自适应导入数据库

python 将excel导入数据库 功能如下: 将excel中每个sheet自动导入数据库,以sheet名称为表名在数据库中创建表; 将每个sheet中的数据添加至数据库对应表中;默认以第一行为该表的列表名,其它行作为数据; 查找数据中存在的表文件名; 查找数据库中某表的说有数据; 向数据库某表中添加数据; 自适应创建表; 小结: 使用python sqlite创建表,查看表数量及名称,查看表的列表名称,查看表的内容,表数据插入; 代码如下: # This is a sample Python scr

thecentury的博客 9万+
上一篇: Delphi编程将数据库数据快速导入Excel
下一篇: JDK环境变量配置小工具
vniceboy
博客等级 码龄21年 0粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值