CSV 解析不识别换行符 (ASP)

标签 csv vbscript asp-classic

我正在使用 VBScript 解析 CSV 数据并将其显示在表格上。我已经设置了 CSV,当我在 Sublime Text 中打开它时,标题和内容在不同的行上(除了标题之外只有一行内容)。它在 Sublime Text 中显示两行。

标题在行尾没有逗号,所以它不会将其分开,只是基本上将第二行的第一个条目附加到标题行的最后一个条目,因为它在技术上没有划分用逗号。

我使用的代码是:

<html>
<head>
</head>
<body>
<%@language="vbscript"%>
<table border="1">
<%
dim csv_to_read, fso, act
csv_to_read="sample.csv"
set fso = createobject("scripting.filesystemobject")
set act = fso.opentextfile(server.mappath(csv_to_read))
'Read the first line of the csv, typically these are colum headings
Response.Write "<tr><th>" & replace(act.readline,",","</th><th>") & "</th></tr>" & vbCrLf
'Read the rest of the csv
Response.Write "<tr><td>" & replace(replace(act.readall,vbCrLf,"</td></tr>"&vbCrLf&"<tr><td>"),",","</td><td>") & "</td></tr>"
%>
<caption>Total Number of Records: <%=act.Line-1%></caption>
</table>
</body>
</html>

为什么它不识别换行符?

感谢您的帮助!

最佳答案

认为您的问题是由于文件没有 vbCrLf 的 EOL 标记(但可能是 crLf)引起的。证据:

s = "1,2,3" & vbLf & "4,5,6"
h = "<tr><td>" & replace(replace(s,vbCrLf,"</td></tr>" & vbCrLf & "<tr><td>"),",","</td><td>") & "</td></tr>"
WScript.Echo "vbLf"
WScript.Echo h
s = "1,2,3" & vbCrLf & "4,5,6"
h = "<tr><td>" & replace(replace(s,vbCrLf,"</td></tr>" & vbCrLf & "<tr><td>"),",","</td><td>") & "</td></tr>"
WScript.Echo "vbCrLf"
WScript.Echo h

输出:

cscript 23072652.vbs
vbLf
<tr><td>1</td><td>2</td><td>3
4</td><td>5</td><td>6</td></tr>
vbCrLf
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>

(我希望输出将向循环倡导者证明双重替换生成有效的 HTML)

更新评论:

这个版本的脚本:

s = "1,2,3" & vbCrLf & "4,5,6"
WScript.Echo ".ReadAll() (faked):"
WScript.Echo s

' h = "<tr><td>" & replace(replace(s,vbCrLf,"</td></tr>" & vbCrLf & "<tr><td>"),",","</td><td>") & "</td></tr>"
' step by step

h = replace(s,vbCrLf,"</td></tr>" & vbCrLf & "<tr><td>")
WScript.Echo "step 1 - EOL handling:"
WScript.Echo h
h = replace(h,",","</td><td>")
WScript.Echo "step 2 - comma handling:"
WScript.Echo h
h = "<tr><td>" & h & "</td></tr>"
WScript.Echo "step 3 - head & tail I:"
WScript.Echo h
h = "<!DOCTYPE html><html><head><title>replace demo</title></head><body><table>" & vbCrLf & h & vbCrLf & "</table></body></html>"
WScript.Echo "step 4 - head & tail II:"
WScript.Echo h

输出:

cscript 23072652.vbs
.ReadAll() (faked):
1,2,3
4,5,6
step 1 - EOL handling:
1,2,3</td></tr>
<tr><td>4,5,6
step 2 - comma handling:
1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6
step 3 - head & tail I:
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>
step 4 - head & tail II:
<!DOCTYPE html><html><head><title>replace demo</title></head><body><table>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>
</table></body></html>

应该使双重替换的工作方式可见,并且所有部分都很重要。

关于CSV 解析不识别换行符 (ASP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23072652/

相关文章:

vbscript - 创建停留在顶部并阻止其他窗口的 vbscript 消息框

javascript - 使用 Javascript 或 VBscript 将本地 Html 表单数据导出到 CSV

iis - 服务器对象错误 'ASP 0177 : 800401f3' Server.CreateObject 失败 - 仅当未登录服务器时

c# - 将经典 ASP 应用程序转换为 ASP.NET 有哪些有用的策略

java - 如何将 ArrayList<Object> 写入 csv 文件

Python:如何根据其表示进行除法?

pandas - 将 tensorflow 数据集转换为 Pandas 数据框

powershell - 在 powershell 的列中处理带有换行符的 CSV

python - 使用 CalculateField 更新带有日期的字段

asp-classic - asp中的记录集和asp中的执行存储过程