You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中使用CsvHelper Writer的ShouldQuote实现字段全用Chr(34)包裹示例求助

VB.NET CSV全字段包裹双引号实现方案

ShouldQuote 委托的VB.NET对应实现

如果你使用的是CsvHelper类库(和C#中用到的ShouldQuote为同一类库的API),VB.NET下的语法和C#逻辑完全对齐,仅Lambda写法有差异:
要实现所有字段强制用Chr(34)(双引号)包裹,直接将ShouldQuote委托的返回值固定为True即可。

完整代码示例

基于CsvHelper的实现

Imports System.Globalization
Imports System.IO
Imports System.Text
Imports CsvHelper
Imports CsvHelper.Configuration

Public Sub ExportQuotedCsv(savePath As String, dataList As IEnumerable(Of 你的业务模型类))
    ' 配置CSV导出规则
    Dim csvConfig As New CsvConfiguration(CultureInfo.InvariantCulture) With {
        .ShouldQuote = Function(context) True ' 强制所有字段都添加引号包裹
    }

    Using streamWriter As New StreamWriter(savePath, False, Encoding.UTF8)
        Using csvWriter As New CsvWriter(streamWriter, csvConfig)
            csvWriter.WriteRecords(dataList)
        End Using
    End Using
End Sub

无第三方依赖的手动实现

如果你不想引入类库,可以自己实现全字段包裹逻辑,同时自动处理字段内的双引号转义:

Imports System.IO
Imports System.Text

Public Sub ManualExportQuotedCsv(savePath As String, rows As List(Of List(Of String)))
    Dim formattedLines = rows.Select(Function(row)
        ' 逐字段转义内部双引号,外层包裹Chr(34)
        Dim quotedFields = row.Select(Function(field)
            Dim escapedField = field.Replace("""", """""")
            Return $"{Chr(34)}{escapedField}{Chr(34)}"
        End Function)
        Return String.Join(",", quotedFields)
    End Function)

    File.WriteAllLines(savePath, formattedLines, Encoding.UTF8)
End Sub

补充说明

  • 如果需要自定义判断是否需要加引号的逻辑,修改ShouldQuote委托内的返回条件即可,和C#中的判断逻辑完全通用
  • 字段内的双引号必须转义为两个连续双引号,否则会导致CSV格式解析错误

内容的提问来源于stack exchange,提问作者qwackerz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:54:03