导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2018/1/28 13:41:10
标题:
请教个 xlsreadwriteII 的数据读取问题
浏览:2928
加入我的收藏
楼主:
xlsreadwriteII读取excel表格数据 excel里面有换行比如 AAAA BBBB CCCC 读取之后用ASSTRING 就变成 AAAA BBBB CCCC了 如何保持这个换行那?
----------------------------------------------
-
作者:
2018/1/28 14:30:25
1楼:
每读一行,加一个13#10#
----------------------------------------------
-
作者:
2018/1/28 14:51:33
2楼:
xlsrw.Sheets[0].AsString[1,2];这样会把一个表格里面的数据全部都读取出来。 读了之后里面的换行符就没有了
----------------------------------------------
-
作者:
bjlg (蓝天)
★☆☆☆☆
-
盒子活跃会员
2018/1/28 20:30:22
3楼:
应该是有吧,应该是一个#$A了。 你自己试试看,要不就是你的版本的问题,或者你的excel表的数据
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
2018/1/28 22:39:16
4楼:
版本:XLSReadWriteII5 excel里面有 alt+回车的换行 和自动换行的换行都不行 还有个用了 CHR(10)连接的 读出来都是不能换行的。要不不是用的asstring?
----------------------------------------------
-
作者:
bjlg (蓝天)
★☆☆☆☆
-
盒子活跃会员
2018/1/29 0:24:48
5楼:
可以确定的是5.20.62 源码版本,没有你说的问题 str:= XLS.Sheets[0].AsString[Col, Row]; 得到的字符串'111 '#$A'222 '#$A'333' excel使用的是alt+回车的换行
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
2018/1/29 22:39:23
6楼:
感谢回复,我还是不能读出来 还请再指点一下。文件和代码已经上传 self.XLSReadWriteII51.LoadFromFile('test.xls'); XLSReadWriteII51.Read; Memo1.Text:=XLSReadWriteII51.Sheets[0].AsString[1,1]; excel中的数据 "换行的数据 第二行 第三行 第4行" 得到的结果 【换行的数据第二行第三行第4行】 ftp下载的5.20.62 源码版本 Delphi 10 Seattle 还是得到的这么一行数据
----------------------------------------------
-
作者:
bjlg (蓝天)
★☆☆☆☆
-
盒子活跃会员
2018/1/30 21:32:54
7楼:
你没贴出突来,memo中的add增加的内容本身就是一行,即使你 有换行,也给你做到一行中,你看是不是你的richedit换行了
此帖子包含附件: 大小: 43.0K
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
2018/1/31 20:06:50
8楼:
我这里就是没有换行的信息。我不知道我做了什么
此帖子包含附件: 大小: 29.4K
----------------------------------------------
-
作者:
2018/2/3 17:41:33
9楼:
@bjlg 能不能麻烦你把你的xlsreadwrite发我试试。 我下了好多版本的也不行,工具也卸载了重新装了10.2的 然后装到6.0的xlsreadwrite还是没有那个换行符。 想不到还有哪里的问题了
----------------------------------------------
-
作者:
2018/2/3 18:54:01
10楼:
我想我好像知道了。 excel里面自动换行符号是10 而xlsreadwrite 换行是回车换行是 32 会把10给丢弃 而richedit也不认32 不知道是不是这么个情况 @bjlg请问你的delphi的版本是多少啊?
----------------------------------------------
-
作者:
2018/2/4 19:58:04
11楼:
新版本 DELPHI 的 StringList Memo.Lines 都是自动支持 $1A 的。 垃圾 D7 是不是支持,就不知道了。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/2/5 23:30:18
12楼:
BIFF_ReadII5 function TXLSReadII.CheckFmlaStrVal(AVal: AxUCString): AxUCString; var i,j: integer; begin SetLength(Result,Length(AVal)); j := 0; for i := 1 to Length(AVal) do begin if Word(AVal[i]) >= 32 then begin //第462行 应该是这里判断小于32就抛弃了 Inc(j); Result[j] := AVal[i]; end; end; SetLength(Result,j); end;
----------------------------------------------
-
作者:
bjlg (蓝天)
★☆☆☆☆
-
盒子活跃会员
2018/2/6 2:41:26
13楼:
@learndelphi,不是的,xlsreadwrite 读出来的就是10, @wang_80919 memo。lines调用系统的 SendMessage 在lines中加入换行是不给换行的 应该是每个lines。add 加入换行 @learndelphi 我在我的没有发现你这个函数
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
2018/2/6 8:29:01
14楼:
白痴,我都说了 我们的 新版本 DELPHI 才支持的。你的 垃圾 D7 不支持很正常。
----------------------------------------------
(C)(P)Flying Wang
作者:
bjlg (蓝天)
★☆☆☆☆
-
盒子活跃会员
2018/2/6 11:14:20
15楼:
只有白痴才会说别人是白痴! 我的dephi delphi版本 Embarcadero® Delphi 10.2 Version 25.0.29039.2004 builder 10.2 update 2 估计你没看楼主的 project 自己多做些测试在说话! 即使最新的delphi tokyo update2 ,他的VCL memo也是不支持#10换行的,FMX的直接支持换行而已,而不是delphi7不支持,新版本支持。 你好好自己看看,
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
2018/2/6 11:19:28
15楼:
@bjlg 我下载的xlsreadwrite 读出来之后10 就直接被删除掉了。 然后我把这里改掉就可以了 if Word(AVal[i]) >= 32 then begin //第462行 应该是这里判断小于32就抛弃了 我估计是版本的问题。 我是直接从 盒子的uploads下载的。
----------------------------------------------
-
作者:
bjlg (蓝天)
★☆☆☆☆
-
盒子活跃会员
2018/2/6 11:46:09
16楼:
@learndelphi 我下载了2ccc上的,应该就是这个原因。 我的版本就没有这个函数。这个相当于过滤一下 我的最后的日期2015.4.22日的,你的这个是2015年10月的
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
2018/2/6 19:55:35
17楼:
@bjlg 谢谢你这些天的回复。让我找到了方向。 非常感谢。
----------------------------------------------
-
作者:
bjlg (蓝天)
★☆☆☆☆
-
盒子活跃会员
2018/2/6 20:21:58
17楼:
@learndelphi 好像不是你修改的地方,是另外一个文件吧
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
2018/2/7 10:09:56
18楼:
Memo1.Lines.LineBreak 楼主的字符被过滤的问题,我倒是没去研究。但是 回车嘛。
----------------------------------------------
(C)(P)Flying Wang
作者:
bjlg (蓝天)
★☆☆☆☆
-
盒子活跃会员
2018/2/7 10:37:20
19楼:
Memo1.Lines.LineBreak 好像是不行, 而且memo的换行,必须是#13#10, 可以是上次测试写成了#10#13,#10都不行看到不行就认为不行,这是我的失误 Memo1.Lines.LineBreak:=#10; Memo1.Lines.Add('11'#10'22'); 这个不换行 The LineBreak property is used internally in TStrings to set the string terminator characters. Set or read the LineBreak property to determine the string terminator characters in multistring output operations. For example, the GetText method returns a long string containing all TStrings strings, each of which is terminated by the LineBreak value. Note: On Windows, the default LineBreak value is a carriage return and line feed combination (#13#10), whereas on OS X, it is just a line feed (#10).
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
2018/2/7 11:22:44
20楼:
如果非要用memo显示,那在读出字符串后,自己把#10替换成#13#10再添加到memo中不可以吗?
----------------------------------------------
-
作者:
2018/2/7 12:14:34
21楼:
我只能说我 11 楼 的确说错了。 procedure TForm1.FormCreate(Sender: TObject); begin Memo1.Lines.LineBreak := '什么都可以'; Memo1.Lines.Text := 'aaa'#$0A'bbb'#$0A'ccc'; end;
----------------------------------------------
(C)(P)Flying Wang
作者:
bjlg (蓝天)
★☆☆☆☆
-
盒子活跃会员
2018/2/7 14:48:58
22楼:
你说的是 Memo1.Lines.Text 我说的是通过 Memo1.Lines.add 的方法不可以 Memo1.Lines.Text 的调用SetTextStr 中有判断LineBreak 情况
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru