希望从文本导入表格数据时能自定义分隔符

功能建议 · 197 次浏览
FaniX 创建于 2024-07-02 20:48

目前似乎只有将csv文本导入为表格这一个选项,有些时候数据是tsv格式的,而且其中一些列的数据里有逗号,导入起来不是很方便

希望能支持自定义分隔符


回复内容
CL 2024-07-02 22:12
#1

下个版本支持一下。

CL 2024-07-03 07:52
#2

1.43.8 已支持。

FaniX 回复 CL 2024-07-03 11:40 :

👍可以了

不过现在好像没法导入内部含有双引号的数据:

You can ignore bad data by setting BadDataFound to null.
IReader state:
   ColumnCount: 0
   CurrentIndex: 1
   HeaderRecord:
["pattern","replacement","name"]
IParser state:
   ByteCount: 0
   CharCount: 197
   Row: 5
   RawRow: 5
   Count: 3
   RawRecord:
^(\s*)(.*?)(\s*)$	$1<span class="red">$2</span>$3	red

数据是:

pattern	replacement	name
^(\s*)(.*?)(\s*)$	$2	trim
^(\s*)(.*?)(\s*)$	$1<i>$2</i>$3	<i>
^(\s*)(.*?)(\s*)$	$1<code>$2</code>$3	<code>
^(\s*)(.*?)(\s*)$	$1<span class="red">$2</span>$3	red

可以的话能否将引号处理也作为一个自定义选项?


补充:要实现导入也是可以的,但是需要转义为

pattern	replacement	name
^(\s*)(.*?)(\s*)$	$2	trim
^(\s*)(.*?)(\s*)$	$1<i>$2</i>$3	<i>
^(\s*)(.*?)(\s*)$	$1<code>$2</code>$3	<code>
^(\s*)(.*?)(\s*)$	"$1<span class=""red"">$2</span>$3"	red

只是对于已有的数据来说,手动转义起来比较困难

FaniX 最后更新于 2024-07-03 14:38
CL 回复 FaniX 2024-07-03 13:56 :

自定义什么内容呢? 

FaniX 回复 CL 2024-07-03 14:33 :

简单的话就是加一个布尔/选项,选择是按CsvMode.RFC4180还是CsvMode.NoEscape解析引号

允许稍微复杂一点的话就接受一个文本变量,如果为空就用CsvMode.NoEscape解析,如果为"就用CsvMode.RFC4180解析,其他情况就把传入的文本作为自定义转义符,按CsvMode.Escape解析

FaniX 回复 CL 2024-07-03 18:33 :

发现好像不用那么复杂,可以直接通过表达式实现

foreach(string line in Regex.Split({text},"\r\n")){
   {table}.Rows.Add(line.Split('\t').ToArray());
}
CL 回复 FaniX 2024-07-03 19:31 :

好,暂时不加参数了。 另外我尝试增加它报错里的BadDataFound设置为null也可以正常加载出来。 

回复主贴