当前位置: 首页 > 知识库问答 >
问题:

VB。Net导出为CSV时在MS Excel中查看时出现问题

吕修伟
2023-03-14

我遇到了一些非常奇怪的事情。当导出到CSV时,我的顶行显示引号,而下面的行显示向下。

我使用UTF8编码,并手动将双引号添加到值中,以便用引号括起来。

正在使用的代码是

Dim fs As New IO.FileStream(GenericValueEditorExportFilename.Value, IO.FileMode.Create)
        Dim writer As New IO.StreamWriter(fs, Encoding.UTF8)
        fs.Write(Encoding.UTF8.GetPreamble(), 0, Encoding.UTF8.GetPreamble().Length)
.... 
.... 
....

While reader.Read
                If reader("TargetLanguageID") = targetLanguageID Then
                    writer.WriteLine(Encode(reader("SourcePhrase")) & ", " & Encode(reader("TargetPhrase")))
                End If 
.... 
.... 
....

Friend Shared Function Encode(ByVal value As String) As String
    Return ControlChars.Quote & value.Replace("""", """""") & ControlChars.Quote
End Function

在excel中显示的结果显示为(https://ibb.co/ntMYdw)

当我在记事本中打开文件时,文本显示如下。但是每行显示不同。为什么第一行显示它们,第二行不显示。记事本结果显示为(https://ibb.co/fMkWWG)

共有3个答案

沙宣
2023-03-14

像这样的东西应该对你有用。

Dim str As New StringBuilder

For Each dr As DataRow In Me.NorthwindDataSet.Customers

     For Each field As Object In dr.ItemArray

     str.Append(field.ToString & ",")

     Next

     str.Replace(",", vbNewLine, str.Length - 1, 1)

Next



Try

     My.Computer.FileSystem.WriteAllText("C:\temp\testcsv.csv", str.ToString, False)

Catch ex As Exception

     MessageBox.Show("Write Error")

End Try
洪华皓
2023-03-14

因此,问题是由BOM引起的,该BOM是为手动设置文件的编码而创建的,作为对文件的开始写入。

fs.Write(Encoding.UTF8.GetPreamble(), 0, Encoding.UTF8.GetPreamble().Length)

删除这解决问题和文件保持在所需的UTF8编码,因为它是在流写入器上设置的。所以没有必要添加BOM来设置编码。

程彭祖
2023-03-14

Excel将第一行视为标题。

https://stackoverflow.com/a/24923167/2319909

 类似资料:
  • 我有一个CSV文件,我想在我的弹性搜索中导入它。 我用的是Windows 10,我也有一个Kibana,可以在导入后浏览数据。我使用Logstash来尝试导入。 我的所有服务(Kibana、es和Logstash)都在我的本地主机上运行。 我尝试使用以下Logstash配置文件(我的csv文件在正确的路径中): 如您所见,我试图使用“csv”或“grok”过滤器。 然后,我在详细模式下使用以下配置

  • 我试图导入一个与html和它出现在网页中没有类,例如这个h1类(内容-page__title)没有出现。

  • 似乎当数据量变得太大时,Firebase会进入“只读”状态

  • 我有一个RichTextFormat文本框,它包含多行、粗体、下划线和斜体文本。我需要将文本和字体样式都粘贴到Excel单元格中,因此“SAMPLE”仍将是“SAMPLE”,而不是“SAMPLE”或“SAMPLE\b0\par”。 我目前尝试 这让我 {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Cali

  • 我试图生成excel文件,我的数据是超文本标记语言字符串的形式。html字符串中有超链接(锚标签)。列1有一个超链接和之后的一些文本。然而,当在Excel中查看时,它使该单元格中的所有文本都成为超链接。有可能限制吗?在浏览器中打开下面的文件,它工作正常。当在excel中打开时,它会超链接该单元格中的所有内容。

  • 为了了解如何在python中导出spark sql dataframe,我参考了以下链接 null