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。 但尝试一下,看看。