0

我正在使用 VB 脚本将 CSV 文件转换为制表符分隔 (txt) 格式。在 txt 结果文件中,有几个值被转换为日期格式,然后保存为代表日期的数字(即:703359)。我能想出的最佳解决方法是将 .NumberFormat = "@" 添加到 With 条件。这至少将数字表示更改为输出中的日期(Aug-01)。

任何帮助将不胜感激!

谢谢,克里斯。

从 SQL 中的存储过程调用 VB 脚本: //SQL "Call": 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
4

1 回答 1

1

根据 .csv 文件中的数据(例如没有带前导零的 OrderNums,描述中没有“,”/“;”),您需要应用于 .txt 文件的工具的要求(无需引用 /取消引用字符字段)和文件的大小,您可能会以蛮力逃脱

  tsTxt.Write Replace(tsCsv.ReadAll(), ",", vbTab)

如果您需要对格式进行更多控制,请考虑使用 ADO (Connection, "INSERT/SELECT INTO") 和 schema.ini 文件。(请参阅有关文本文件的很多 ADO以开始使用)

这两种策略都避免使用 Excel,因此不会搞砸。

于 2013-09-25T20:27:18.067 回答