在EBS系统中新做一个报表导出EXCEL文件,
工号以 ”0“开头,导出excel会变成整形把”0“全部去掉。
后来在RTF模板中增加:
<fo:bidi-override direction="ltr" unicode-bidi="bidi-override"><?EMPLOYEE_CODE?> </fo:bidi-override>
格式化为文本,这样保留了自然数前面的“0”。
解决一个问题。引发另一个问题。
用户反映导出来的资料,不能通过工号引用姓名过来。
处理EXCEL资料时常会遇到一些数值不能运算,因为它存不可见的未知字符 ,如:"?" 即 char(63) 或换行符 char(10) ,char(13), char(32) 等等。
假设单元格 A1 = 00102
在EXCEL中 用LENB(A1) 返回 值为7 ,怎么这大呢?目测应该是5。
这说它隐藏着两个字符,如:换行符、表格符。
EXCEL里 CODE(A1) 返回 第一个字符的 ASCII 的值为“63”,或将值 复制到sql server 分析器中, 明显地显示
字符串前后各有一个空格符,用SELECT UNICODE(' ') 查 UNICODE 值,返回 63. 对照 ASCII表,是一个 问号“?”
知道即原因,就容易解决问题。
在EXCEL中通过截取字符函数 重新取值排除不可见符【char(63)】,
在B1单元格的公式: =MID(A1,2,LENB(A1)-2)
含意: 从第二位开始截取,截取长度为 总长度减2 。