DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 1
在线用户: 2
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
2018/1/28 13:41:10
标题:
请教个 xlsreadwriteII 的数据读取问题 浏览:2928
加入我的收藏
楼主: xlsreadwriteII读取excel表格数据
excel里面有换行比如
AAAA
BBBB
CCCC
读取之后用ASSTRING 就变成 AAAA BBBB CCCC了
如何保持这个换行那?
----------------------------------------------
-
作者:
男 dlfsystem (dlfsystem) ★☆☆☆☆ -
盒子活跃会员
2018/1/28 14:30:25
1楼: 每读一行,加一个13#10#
----------------------------------------------
-
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
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
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
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
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
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 
还是得到的这么一行数据
此帖子包含附件:learndelphi_201812922463.rar 大小:11.1K
----------------------------------------------
-
作者:
男 bjlg (蓝天) ★☆☆☆☆ -
盒子活跃会员
2018/1/30 21:32:54
7楼: 你没贴出突来,memo中的add增加的内容本身就是一行,即使你 有换行,也给你做到一行中,你看是不是你的richedit换行了
此帖子包含附件:
JPEG 图像
大小:43.0K
----------------------------------------------
http://delphi.icm.edu.pl/ftp/http://delphi-z.ru
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
2018/1/31 20:06:50
8楼: 我这里就是没有换行的信息。我不知道我做了什么
此帖子包含附件:
PNG 图像
大小:29.4K
----------------------------------------------
-
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
2018/2/3 17:41:33
9楼:  @bjlg 能不能麻烦你把你的xlsreadwrite发我试试。
我下了好多版本的也不行,工具也卸载了重新装了10.2的 然后装到6.0的xlsreadwrite还是没有那个换行符。
想不到还有哪里的问题了
----------------------------------------------
-
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
2018/2/3 18:54:01
10楼: 我想我好像知道了。
excel里面自动换行符号是10
而xlsreadwrite 换行是回车换行是 32
会把10给丢弃
而richedit也不认32 不知道是不是这么个情况

@bjlg请问你的delphi的版本是多少啊?
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/2/4 19:58:04
11楼: 新版本 DELPHI 的 StringList Memo.Lines 都是自动支持 $1A 的。

垃圾 D7 是不是支持,就不知道了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
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
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
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
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
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
作者:
男 learndelphi (beside) ★☆☆☆☆ -
盒子活跃会员
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
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
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
作者:
男 hyz_hz (随风) ★☆☆☆☆ -
普通会员
2018/2/7 11:22:44
20楼: 如果非要用memo显示,那在读出字符串后,自己把#10替换成#13#10再添加到memo中不可以吗?
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
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
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行109.375毫秒 RSS