Excel复制数据格式怎样保持不变?[已解决]
本帖最后由 blue_dvd 于 2012-12-12 08:36 编辑源码如下:Local $sFilePath1 = FileOpenDialog("选择导入电子表格文件", @ScriptDir & "\", "Microsoft Excel 工作薄 (*.xls)", 1 + 2 + 4)
$oexcel=ObjCreate("excel.application") ;创建excel进程
$oexcel.visible=False;隐藏进程界面,可以提高处理速度
$wb=$oexcel.workbooks.open($sFilePath1);打开选定工作簿
$arr=$wb.worksheets(1).usedrange.value
$wb.worksheets(2).range("a1").resize(UBound($arr,2),UBound($arr)).value=$arr;结果写入工作簿第二个工作表
$wb.close(true);保存并关闭工作簿(参数true代表保存)
$oexcel.quit;退出excel进程
MsgBox(0,"","处理完成!")测试数据见附件
发现身份证数据复制后再存入则变为科学计数法,而且后三位变成了0,请高手帮忙解决一下,谢谢了! 更奇怪的是:双击原表格中身份证的数据,立刻就变成了上述情况,都不知道原表怎样生成的? 设置成文本格式或者在前面加入半角逗号~~ 回复 3# annybaby
除了把源文件数据改为文本外
用什么语句可以实现设置文本,写入表格中? with $wb.worksheets(2).range("a1").resize(UBound($arr,2),UBound($arr))
.numberformatlocal="@"
.value=$arr
endwith写入那句改成这样试下 本帖最后由 netegg 于 2012-12-9 19:39 编辑
#include <Excel.au3>
Local $oExcel = _ExcelBookNew() ;Create new book, make it visible
; We can fill-up some cells using a simple loop and random Numbers
For $y = 1 To 5
For $x = 1 To 5
_ExcelWriteCell($oExcel, Random(100000000000000000, 900000000000000000), $x, $y) ;Some random numbers to file
Next
Next
$sFormat = "##################" ;Format String tells _ExcelNumberFormat to make it a string
_ExcelNumberFormat($oExcel, $sFormat, 1, 1, 5, 5) ;Start on Row 1, Start on Column 1, End on Row 5, End on Column 5
MsgBox(0, "Exiting", "Press OK to Save File and Exit")
_ExcelBookSaveAs($oExcel, @TempDir & "\Temp.xls", "xls", 0, 1) ; Now we save it into the temp directory; overwrite existing file if necessary
_ExcelBookClose($oExcel) ; And finally we close out
fileclose(@TempDir & "\Temp.xls")
filedelete(@TempDir & "\Temp.xls")
回复 5# kevinch
这句话太神了,结果正确.numberformatlocal="@" 这句是什么意思? 回复 6# netegg
蛋大!你的代码不行哦!后面还是三个0!
进来学习了. 本帖最后由 netegg 于 2012-12-9 23:10 编辑
回复 8# blue_dvd
你这个身份证是几代的号?少位吧?把#写成和数字长度相同的个数就行了
不对了,可能还是格式的事 回复 10# netegg
二代的号,18位的! 本帖最后由 netegg 于 2012-12-10 02:51 编辑
回复 11# blue_dvd
不对了,那不是填写excel的事,是autoit对数字的识别的问题,你用random出来之后,只认到15位,后面自动转科学计数了
不对还是填excel的事,不认,看看excel关于数字的自定义格式,只到15位,后面的为0,起码我这是,office2013 写入那句改成这样试下
kevinch 发表于 2012-12-9 09:57 http://www.autoitx.com/images/common/back.gif
学习了,虽然还不明白意思。 回复 12# netegg
蛋兄真的不用睡觉的么?这么晚还在帮解答~~
刚刚试了下,可以确定不是AU3生成或者处理数据的问题(比如说,可以采用分段生成再拼接的形式,其实也没有必要,可以先将数据保存到变量中并输出到控制台,可以看出没是AU3的问题),是EXCEL的问题~~
明天再试 本帖最后由 netegg 于 2012-12-10 02:56 编辑
回复 14# annybaby
不用试了,excel的数字格式好像不支持到18位,我看了用那个格式套到自定义数字格式里,示例出来的就是15位,必须转字符串
那个@就是把数字转成字符串的一个特殊格式
页:
[1]
2