导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
vmao (毛小毛)
★☆☆☆☆
-
盒子活跃会员
2016/6/15 15:35:17
标题:
NativeExcel公式错误如何取值?
浏览:5439
加入我的收藏
楼主:
NativeExcel 格子里面带公式,当公式错误是在Excel中显示#N/A,但是ws.Range['H10','H10'].Value取到的却不是#N/A,如何判断公式计算错误了直接跳过该行?
----------------------------------------------
-
作者:
2016/6/15 16:53:14
1楼:
NativeExcel对公式支持不好,但是对多语言支持好。 XLSReadWriteII对公式支持好,但是对多语言支持不好。 没办法,我就在一套软件里奇葩的同时用了这两套控件。
----------------------------------------------
只有偏执狂才能生存!
作者:
2016/6/15 20:37:17
2楼:
XLSReadWriteII 对多语言有什么问题,能说说不? 我到目前为止还没遇到过中文方面有什么问题
----------------------------------------------
-
作者:
2016/6/16 9:10:45
3楼:
XLSReadWriteII远远不如NativeExcel好用。编译出来的东西还大。Bug多。
----------------------------------------------
-
作者:
vmao (毛小毛)
★☆☆☆☆
-
盒子活跃会员
2016/6/16 9:21:13
4楼:
可以了,重新调整了一下Excel公式的写法就可以了,原来的写法excel能执行但nativeexcel执行不了。nativeexcel确实比XLSReadWriteII小很多,用起来相对方便。不过好像对图像什么的支持不好,对象操作麻烦,纯字符,数值比较好存取。
----------------------------------------------
-
作者:
yzdbs (学无止境)
★☆☆☆☆
-
盒子活跃会员
2016/6/16 10:11:44
5楼:
nativeexcel 还便宜
----------------------------------------------
┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻ ┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳ ┻┳┻┳┻┳learning stream media.┳┻┳┻┳┻ ┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳ ┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻ ┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳┻┳
作者:
2016/6/16 15:13:10
6楼:
to crystalmoon XLSReadWriteII 写单一语言是没问题,但是双语一起写(中文和其它小语种),就会出问题。我用的是2010版,照理应该是没有问题的,可见的XLSReadWriteII对Unicode支持不好。
----------------------------------------------
只有偏执狂才能生存!
作者:
2016/6/16 15:36:44
7楼:
噢。好的,谢谢,我以后遇到就心里有数了。
----------------------------------------------
-
作者:
2016/6/20 23:04:57
8楼:
XLSReadWriteII、NativeExcel都没有显示Excel表格内容的控件,我想要轻量级的控件,在程序中显示申报表之类的Excel文件内容,内容为纯字符、数值的表格,不用支持图形,反应要快,开源的更好。 有木有?
----------------------------------------------
-
作者:
2016/6/21 14:04:35
9楼:
@kylix2008 XlsSpreedSheet控件,XLSReadWriteII同一作者开发的,很小巧。
----------------------------------------------
-
作者:
2016/6/22 20:33:42
10楼:
谢谢9楼。
----------------------------------------------
-
作者:
2016/6/22 22:41:47
11楼:
测试发现, XlsSpreedSheet控件显示中文表格,会对表格内的文字自动纵向显示(一个字符占一行),文字类(不全是数字字符)可通过设置单元格Alignment属性改为横向显示,纯数字字符则改不过来,如555.67显示为 5 5 5 . 6 7 即显示格式很难调。 XlsSpreedSheet控件版本为v.2.00.06,采用XE3编译,操作系统为windows 7。 附编译官方例子XLSSpreadSheet,及打开样表文件“《增值税纳税申报表(一般纳税人适用)》及其附列资料.xls”。
----------------------------------------------
-
作者:
2016/6/22 23:27:12
12楼:
是不是6楼所说的XLSReadWriteII对Unicode支持不好的原因?
----------------------------------------------
-
作者:
2016/6/23 21:03:48
13楼:
@kylix2008,测试你的xls确实有问题,我觉得应该和样本有关系,你可以提交给官方,但不是所有中文表格都会有这个问题,比如我这个下面附图中的文件就没问题。 另外,你的xls在DevExpress中显示正常,可以暂时用dev的spreedsheet显示,唯一的问题就是太重量了,启动也慢。
此帖子包含附件: 大小: 73.5K
----------------------------------------------
-
作者:
2016/6/23 22:41:20
14楼:
可能是样本的问题。不过该样本用Excel和WPS打开都没问题,应该还是XLSSpreadSheet对Excel文件兼容度不够的缘故(显示不带合并单元格的文件,试了几个,似乎都没问题)。 官方示例XLSSpreadSheetAdvanced.exe可打开带工作表保护和工作薄保护的excel文件(只读单元格),并且能正常读写,但是显示格式依然不对。 我自己用excel 2003制作的excel中文表格(附件Book1.xls),XLSSpreadSheetAdvanced打开,部分单元格正确显示,部分问题同11楼所述。 我改用TMS FlexCel的XlsViewer.exe官方示例打开,显示要好得多(还是有瑕疵,主要是单元格大小计算与excel不同,造成文字显示不该换行的换行了,估计是对中文字体的大小计算原因),带显示比例缩放功能,但是不能打开带工作表保护和工作薄保护的excel文件。 没测试过Devexpress的ExpressSpreadSheet(非我想要的轻量级控件),不知是否兼容性更好。
----------------------------------------------
-
作者:
2016/6/24 11:56:18
15楼:
@kylix2008 Devexpress的ExpressSpreadSheet 兼容性相对更好,唯一的问题就是个头大,启动慢。
----------------------------------------------
-
作者:
2018/5/4 15:28:58
17楼:
@kylix2008 你发的TMS FlexCel的XlsViewer.exe官方示例,这个exe文件我在tms官网找了半天找不到,是你自己编译的吗?如果有这个demo的源码,能共享一下吗,或者把tms官网地址发一下我去下载也可以,谢谢了
----------------------------------------------
-
作者:
2018/5/6 22:11:23
18楼:
@17楼: FlexCel\Demo\Delphi\Modules\25.Printing and Exporting\10.XlsViewer TMS.FlexCelVCL.6.0.2.0安装后,有上面这个目录。
----------------------------------------------
-
作者:
2018/5/6 22:22:49
19楼:
金山WPS保存的Excel 2003格式的文件(*.XLS),NativeExcel能正常读写。 NativeExcel打开WPS保存的EXCEL 2007格式文件可能会出错:raised exception class Exception with message 'Decompression error: ',但用MS EXCEL却能正常打开。 myIXLSWorkbook.OPEN(ExcelFileName)这一句出错。 经追踪,打开文件在...\NativeExcel 3.0.27\Source\zlib_zlibstream.pas 中的function TZLibStream.Read的ret := FZ_stream.Inflate(FFlush);返回'Decompression error: '错误值。 有没高手能解决一下。
----------------------------------------------
-
作者:
vmao (毛小毛)
★☆☆☆☆
-
盒子活跃会员
2018/5/6 22:52:48
20楼:
楼上的,我也发现这个问题了。WPS保存后的xls,NativeExcel读取不了。
----------------------------------------------
-
作者:
2018/5/7 18:52:17
21楼:
@kylix2008 怪不得找到不到的,这个XlsViewer例子只有你说的那个版本里面才有,高版本已经没有这个demo了 XlsViewer例子用TFlexCelGrid来显示excel,内容基本完整。但是在6.3以后的版本,已经取消了TFlexCelGrid这个组件 FlexCel感觉资料好少,6.3以后的版本连显示excel文件的demo也没有,自带的帮助文档和在线文档都不全。对于新手还是用dev上手快一些,但是dev体积实在太大了,启动也慢
----------------------------------------------
-
作者:
2018/5/7 22:03:38
22楼:
亲,改用XlsGen吧,速度与NativeExcel一样快,功能比NativeExcel强大得多。 现如今,不支持2007+的XLSX格式,好意思说你的程序支持Excel读写吗? NativeExcel改XlsGen,鄙人走过的路,畅通无阻。其他Excel控件不推荐,要么是速度慢,要么是功能单一,要么是难学难用。
----------------------------------------------
-
作者:
2018/5/7 22:39:08
23楼:
哪有xlsgen?
----------------------------------------------
-
作者:
2018/5/7 23:32:04
24楼:
@c5soft 同求 Xlsgen ,非常感谢
----------------------------------------------
Delphi forever
作者:
xjia (xjia)
★☆☆☆☆
-
盒子活跃会员
2018/5/7 23:59:09
24楼:
哪个XLS控件能读取单元格中文字的不同字体吗?
----------------------------------------------
-
作者:
2018/5/8 6:55:20
25楼:
xlsGen破解版: https://wedelphi.com/t/419826/
----------------------------------------------
-
作者:
2018/5/8 21:54:29
26楼:
@25楼: wedelphi.com注册不成功,下不了。 发现一个地方: Bergsoft Next Suite 6 (VCL) v6.1.0 April 2018 for D7-XE10.2 Full Source https://www.irdevelopers.com/post/18062/Bergsoft-Next-Suite.html XLSGen v4.5.0.2 + Crack https://www.irdevelopers.com/post/18577/XLSGen-crack.html 哪位能下?
----------------------------------------------
-
作者:
2018/5/8 22:51:55
27楼:
XLSGen实际是个ActiveX控件吧。不能像NativeExcel一样无缝嵌入程序中。
----------------------------------------------
-
作者:
2018/5/9 10:23:42
28楼:
XlsGen支持ComFree模式,就是无需ActiveX注册,直接加载: type TFunc = function(): Pointer; stdcall; function PrepareXlsGenEngine(const AComFree: Boolean = True): IXlsEngine; var FHandle: THandle; FStart: TFunc; begin if AComFree then begin FHandle := LoadLibrary('XlsGen.dll'); @FStart := GetProcAddress(FHandle, PAnsiChar('Start')); if not Assigned(FStart) then raise Exception.Create('Load XlsGen.dll Failure!'); Result := IXlsEngine(FStart()); end else OleCheck(CoCreateInstance(Class_CoXlsEngine, nil, CLSCTX_ALL, IXlsEngine, Result)); end; XlsGen.dll可以作为资源镶入exe中,在打开excel前放出来。付出的代价是镶入dll的exe比nativeExcel大,获得的回报是与时俱进,支持Excel 2010。
----------------------------------------------
-
作者:
2018/5/9 18:56:57
29楼:
NativeExcel有源码,读写速度非常快,本人水平有限,要是哪位高人能改进一下,适应新的Office版本,就好了。
----------------------------------------------
-
作者:
2018/5/9 20:08:28
30楼:
这一个如何? http://www.libxl.com/home.html LibXL是一个专业的Excel文件管理工具,LibXL是一个可以读写Excel文件的库,易用而且功能强大,不需要Microsoft Excel和.NET框架。 功能描述About Feature 直接读写Excel文件 LibXL是一个可以读写Excel文件的库,易用而且功能强大,不需要Microsoft Excel和.NET框架。它可以用作: 生成全新电子表格 从已有电子表格中提取数据 编辑已有电子表格 功能特点 毫不费力地帮助你的应用程序输出或提取数据到Excel文件,也可以从Excel文件中输出和提取数据 可用作报表引擎 可应用于C、C++、C#、Delphi、Fortran以及其他语言 支持Excel 97-2003二进制格式(XLS)和Excel 2007-2013 XML格式(xlsx / xlsm) 支持Unicode和64位平台 简单的交互操作,不再依赖Excel LibXL具有C/C++头文件、Delphi部件以及.NET组件都包含在你的项目中,没有OLE自动化。 定制外观和感觉 LibXL支持众多格式选项:对齐、边框、颜色、填充图案、字体、合并单元格等。 高性能 书写速度大约在每秒2100000个cells以及在二进制xls格式中8字符的随机字符串每秒240000个cells(CPU 3.2 GHz)。 语言:Delphi var Book: TBook; Sheet: TSheet; begin Book := TBinBook.Create; // use TXmlBook() for xlsx //xlBookSetKey(Book,PAnsiChar('GCCG'),PAnsiChar('windows-282123090cc0e6036db16b60a1o3p0h9')); Sheet := Book.addSheet('Sheet1'); Sheet.writeStr(2, 1, 'Hello, World !'); Sheet.writeNum(3, 1, 1000); Book.save('example.xls'); Book.Free; end;
----------------------------------------------
-
作者:
2018/5/9 20:10:10
31楼:
经测试,LibXL读入WPS 生成的EXCEL 2007格式的文件,仍会报错:invalid file format delphi编译其官方示例,生成的exe文件,360会报毒:Trojam.Generic
----------------------------------------------
-
作者:
2018/5/9 20:15:58
32楼:
recently i test XlsGen vs nativeExcel, it seems XlsGen kills nativeExcel: https://wedelphi.com/t/419824/ 不知XlsGen读入WPS生成的EXCEL 2007格式的文件,要出错不? **********、**********、**********、********** 读写速度比较: Speed test: NativeExcel 3.1 vs TXLSFile 4.0 https://www.board4all.biz/threads/speed-test-nativeexcel-3-1-vs-txlsfile-4-0.578635/#post-1296302 XE6下测试: TXLSFile: Write 65535 rows each 10 cols,time taken: 00:17.796 NativeExcel: Write 65535 rows each 10 cols,time taken: 00:01.439 XLSReadWriteII: Write 65535 rows each 10 cols,time taken: 00:02.600 TXLSFile: Read 65535 rows each 10 cols,time taken: 00:02.261 NativeExcel: Read 65535 rows each 10 cols,time taken: 00:03.204 XLSReadWriteII: Read 65535 rows each 10 cols,time taken: 00:01.447 TXLSFile: Write 2000 rows each 100 cols,time taken: 00:01.738 NativeExcel: Write 2000 rows each 100 cols,time taken: 00:00.328 XLSReadWriteII: Write 2000 rows each 100 cols,time taken: 00:00.565 TXLSFile: Read 2000 rows each 100 cols,time taken: 00:00.571 NativeExcel: Read 2000 rows each 100 cols,time taken: 00:00.955 XLSReadWriteII: Read 2000 rows each 100 cols,time taken: 00:00.448 TXLSFile: Write 65535 rows each 100 cols,time taken: 30:18.314 NativeExcel: Write 65535 rows each 100 cols,time taken: 00:12.144 XLSReadWriteII: Write 65535 rows each 100 cols,time taken: 00:40.625 TXLSFile: Read 65535 rows each 100 cols,time taken: 01:22.480 NativeExcel: Read 65535 rows each 100 cols, Error:Out of memory (XE6下出错,XE7以上不出错) XLSReadWriteII: Read 65535 rows each 100 cols,time taken: 00:10.854 **********、**********、**********、********** Compiled with Delphi7, NativeExcel 3.0.27 worked fine: NativeExcel: Write 65535 rows each 100 cols,time taken: 00:17.123 NativeExcel: Read 65535 rows each 100 cols,time taken: 00:40.294 same version report "Out of memory" when compiled with Delphi 2007 and Delphi XE6. **********、**********、**********、********** XE6 EXE File Size CompilingSpec FileSize Addition ---------- Base--------- 2339 0 Base+TXLSFile 2500 161 Base+NativeExcel 3114 775 Base+XLSReadWrite 5868 3529
----------------------------------------------
-
作者:
xjia (xjia)
★☆☆☆☆
-
盒子活跃会员
2018/5/10 9:57:45
33楼:
TXLSFile/NativeExcel/XLSReadWriteII 这三个打开现有文件都会丢弃不支持的格式或函数,LibXL好象不会,XLSGen没试。
----------------------------------------------
-
作者:
2019/2/16 17:16:55
34楼:
LibXL和XLSGen不爽的是要带一个dll,如果用于unigui在服务端还不错。 一般简单读取,我用NativeExcel。
----------------------------------------------
-
作者:
2019/2/19 10:53:42
35楼:
感谢星五, XLSGen已收藏。
----------------------------------------------
-