| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3053 人关注过本帖
标题:如何从数组向EXCEL添加数据?
只看楼主 加入收藏
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
结帖率:94.59%
收藏
已结贴  问题点数:20 回复次数:27 
如何从数组向EXCEL添加数据?
wengjl版说:有想法,就会有办法我又有新想法了,只是没有办法,特来求办法!

从招生计划库zsjh.dbf中把符合条件的计划导出到表AA.dbf,然后copy to BB.xls,再对BB.xls进行字体、字号等格式设置。因为每次都要对格式进行设置,比较浪费时间。我就想,先做好一个固定格式的表头,再把BB.xls的内容复制、粘贴到表头文件,这样应该更快一点。
有关代码是:
COPY TO BB.xls
oExcel=Createobject("Excel.application")
oExcel.Workbooks.Open("BB.xls")
oExcel.ActiveSheet.UsedRange.Copy
oExcel.Workbooks.Open("表头模板.xlsx")
oExcel.activesheet.Range("A3").PasteSpecial
这样,数据是可以拷过来的,但与表头模板.xlsx的格式不一样。我想,问题可能出在最后一名粘贴,应该有个参数“匹配目标单元格格式”。请问:PasteSpecial是否有参数?有的话,“匹配目标单元格格式”的参数是什么?
这种复制、粘贴的办法还会带来一个问题,就是提示“图片太大,超过部分将被截去”,目前也还没找到合适的解决方法。

另一种想法,就是把BB.xls的内容读入数组,然后从数组向表头模板.xlsx添加数据。添加后同样要保留表头模板的原格式。请问:如何从数组添加数据并匹配目标单元格格式?
谢谢!
附件.rar (81.58 KB)

搜索更多相关主题的帖子: xls 格式 添加 数据 数组 
2021-03-26 15:03
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:20 
上传AA.DBF表
可以直接从AA.DBF向EXCEL模板传输数据

[此贴子已经被作者于2021-3-26 15:10编辑过]


坚守VFP最后的阵地
2021-03-26 15:09
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
收藏
得分:0 
谢谢SDTA!
AA.rar (86.94 KB)
2021-03-26 15:17
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2232
专家分:3913
注 册:2007-4-27
收藏
得分:0 
以下是引用zhousr在2021-3-26 15:03:43的发言:

wengjl版说:有想法,就会有办法我又有新想法了,只是没有办法,特来求办法!

从招生计划库zsjh.dbf中把符合条件的计划导出到表AA.dbf,然后copy to BB.xls,再对BB.xls进行字体、字号等格式设置。因为每次都要对格式进行设置,比较浪费时间。我就想,先做好一个固定格式的表头,再把BB.xls的内容复制、粘贴到表头文件,这样应该更快一点。
有关代码是:
COPY TO BB.xls
oExcel=Createobject("Excel.application")
oExcel.Workbooks.Open("BB.xls")
oExcel.ActiveSheet.UsedRange.Copy
oExcel.Workbooks.Open("表头模板.xlsx")
oExcel.activesheet.Range("A3").PasteSpecial
这样,数据是可以拷过来的,但与表头模板.xlsx的格式不一样。我想,问题可能出在最后一名粘贴,应该有个参数“匹配目标单元格格式”。请问:PasteSpecial是否有参数?有的话,“匹配目标单元格格式”的参数是什么?
这种复制、粘贴的办法还会带来一个问题,就是提示“图片太大,超过部分将被截去”,目前也还没找到合适的解决方法。

另一种想法,就是把BB.xls的内容读入数组,然后从数组向表头模板.xlsx添加数据。添加后同样要保留表头模板的原格式。请问:如何从数组添加数据并匹配目标单元格格式?
谢谢!

你的那一句(红色),将标题也复制过来了,粘贴后,有二行字段名了,所以不对。

需要找到数据区域的最右下角那个单元格的地址 如:X235 然后选定 range("A2:X235").copy

具体最右下角的坐标如何确定 ,前面我有一个求助贴 https://bbs.bccn.net/thread-502968-1-1.html
你去仔细研究研究,就可以了

另外,你的模板表 的字段 要与 BB 的字段 有一一对应关系(包括顺序的一一对应)

[此贴子已经被作者于2021-3-26 15:36编辑过]


只求每天有一丁点儿的进步就可以了
2021-03-26 15:29
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2232
专家分:3913
注 册:2007-4-27
收藏
得分:0 
你的另一种想法
不需要生成BB.XLS。只要打开模板,然后将AA.DBF中的数据一个一个写入即可。最后将模板表另存为…

只求每天有一丁点儿的进步就可以了
2021-03-26 15:39
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
程序代码:
CLOSE DATABASES 
ERASE 查询结果.XLSX
USE a IN 0 ALIAS aa
_VFP.DataToClip("aa", RECCOUNT(), 3)
oExcel = CreateObject("Excel.Application")
WITH oExcel
    .WorkBooks.Open(SYS(5) + SYS(2003) + "\表头模板.xlsx")
    .ActiveSheet.Cells(3, 1).PasteSpecial
    .ActiveSheet.Rows[3].Delete
    .DisplayAlerts = .F.
    .ActiveWorkbook.Saveas(SYS(5) + SYS(2003) + "\查询结果.XLSX", 51)
    .ActiveWorkbook.Close
    .DisplayAlerts = .T.
ENDWITH
IF FILE("查询结果.XLSX")
    MESSAGEBOX("EXCEL文件生成成功")
ENDIF 

坚守VFP最后的阵地
2021-03-26 16:06
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
收藏
得分:0 
谢谢!我测试一下,等会汇报结果!
2021-03-26 16:54
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2232
专家分:3913
注 册:2007-4-27
收藏
得分:0 
还是 有想法,就会有办法 
SDTA给出很简的代码

只求每天有一丁点儿的进步就可以了
2021-03-26 16:56
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
收藏
得分:0 
向SDTA汇报一下:总的来说非常成功,基本达到了要求!还有点小问题:
1.院校代码、专业代码都是文本,复制过来后成了数值型,前面的0丢失,如0001变成了1。
2.省份、城市、学制、本专科等文本后面多了若干空格。
3.备注和参考信息二个备注型字段的内容没复制过来。

再次请求办法
(表中多出一列,是我没来得及删掉)

理化生23452.rar (139.62 KB)


[此贴子已经被作者于2021-3-27 10:41编辑过]

2021-03-27 10:36
zhousr
Rank: 2
等 级:论坛游民
威 望:1
帖 子:266
专家分:47
注 册:2019-3-8
收藏
得分:0 
我现在把BZ和CKXX两个字段内容读入数组,然后用个循环,把备注内容写入到EXCEL。虽然能达到目的,但又循环一次,效率肯定打折扣。如果备注内容能和其他内容一起直接复制就好了。
2021-03-27 11:35
快速回复:如何从数组向EXCEL添加数据?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033847 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved