Excel:如何在CSV文件中将双引号添加到string

我想从Excel中创build一个CSV文件,其中string值应该用双引号引起来,date值应该是MM / dd / yyyy格式。 所有数字和布尔值应该不带引号。

我将如何去做这件事?

Excel不会让你指定格式。 这里有一个MrExcel链接,可能对你也有用。

http://www.mrexcel.com/forum/showthread.php?t=320531

以下是该网站的代码:

Sub CSVFile() Dim SrcRg As Range Dim CurrRow As Range Dim CurrCell As Range Dim CurrTextStr As String Dim ListSep As String Dim FName As Variant FName = Application.GetSaveAsFilename("", "CSV File (*.csv), *.csv") If FName <> False Then ListSep = Application.International(xlListSeparator) If Selection.Cells.Count > 1 Then Set SrcRg = Selection Else Set SrcRg = ActiveSheet.UsedRange End If Open FName For Output As #1 For Each CurrRow In SrcRg.Rows CurrTextStr = "" For Each CurrCell In CurrRow.Cells CurrTextStr = CurrTextStr & """" & CurrCell.Value & """" & ListSep Next While Right(CurrTextStr, 1) = ListSep CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1) Wend Print #1, CurrTextStr Next Close #1 End If End Sub 

使用VBA来做到这一点更容易。 Workbook对象的SaveAs方法只允许您select预定义的格式,而xlCSV不使用双引号分隔string。

在VBA中这样做:

 Dim fileOut As Integer fileOut = FreeFile Open "C:\foo.csv" For Output As #fileOut Write #fileOut, 14, "Stack Overflow", Date, True Close #fileOut 

(注意Date是一个VBA语句,它返回当前系统date作为一个Varianttypes的Date)

如果您然后在记事本中检查该文件:

14,“堆栈溢出”,#2009-05-12#,#TRUE#

string已根据需要进行了分隔,转换为通用格式的date以及date和布尔值均以#符号分隔。

要使用Input #语句读取数据,它将适当地解释所有的值。

如果你想写一部分,然后写完,那么:

 Write #fileOut, 14, "Stack Overflow"; Write #fileOut, Date, True 

产生与原始程序相同的结果。 第一个语句结尾处的分号可防止启动新行

带有双引号的string会导致问题,因此您需要删除或replace这些字符

默认的csv文件格式是在每个值之间使用逗号,包含每个单元格的引号(如果您的单元格包含逗号)以及下一行的换行符,例如

 "A1","B1" "A2","B2" 

这只是从我打开办公室,这可能会有所不同,从excel。 但尝试一下,看看。