我正在使用VB脚本将CSV文件转换为制表符分隔(txt)格式。在txt结果文件中,有几个值被转换为日期格式,然后保存为表示日期的数字(即:703359)。我能想出的最佳解决方案是添加.NumberFormat =“@” 符合条件。这至少会将数字表示更改为输出中的日期(Aug-01)。
非常感谢任何帮助!
谢谢, 克里斯。
从SQL中的存储过程调用VB脚本: // SQL“呼叫”: exec master..xp_cmdshell'c:\ byr \ CSVtoTAB_SKUCodeProtected.vbs C:\ byr \ SkusOrdered.csv C:\ byr \ SkusOrdered.txt
// VB代码开始:
if WScript.Arguments.Count < 2 Then
' WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
Wscript.Quit
End If
Dim oExcel
Dim oBook
Dim oSheet
Set oExcel = CreateObject("Excel.Application")
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
Set oSheet = oBook.Sheets(1)
With oSheet
.Columns(1).NumberFormat = "@"
End With
oBook.SaveAs WScript.Arguments.Item(1), 20
oBook.Close False
oExcel.Quit
SET oBook = NOTHING
SET oExcel = NOTHING
'WScript.Echo "Done"
//示例数据:
OrderNum Sku Description Qty
12988 MHT1101 2010 LBB MANHATTAN 2
12998 MHT1101 2010 LBB MANHATTAN 1
13034 Aug-01 2010 LYB AUGUSTA 3 <-- One of the offending SKU's
13072 ATA2101 2010 LYB ATLANTA 1
13102 MHT1101 2010 LBB MANHATTAN 4
13115 MHT1101 2010 LBB MANHATTAN 5
答案 0 :(得分:1)
取决于.csv文件中的数据(例如,没有带前导零的OrderNums,描述中没有“,”/“;”),您需要应用于.txt文件的工具的要求(不需要)引用/取消引用char字段),以及文件的大小,你可能会蛮力逃脱
tsTxt.Write Replace(tsCsv.ReadAll(), ",", vbTab)
如果您需要更多地控制格式,请考虑使用ADO(连接,“INSERT / SELECT INTO”)和schema.ini文件。 (参见Much ADO About Text Files开始使用)
这两种策略都避免使用Excel,因此无法解决问题。