Много разных CSV-документов для преобразования в один Excel-документ - PullRequest
1 голос
/ 12 сентября 2011

У меня много документов в формате CSV (около 100 различных файлов .csv).Я хочу объединить их все в один документ .xls.Я хочу, чтобы каждый CSV-документ представлял рабочий лист в моем новом xls-документе.Таким образом, мой окончательный результат должен быть одним рабочим листом xls с 100 различными листами, которые изначально были документами .csv.

1 Ответ

1 голос
/ 12 сентября 2011

Я бы использовал язык сценариев, такой как VBS. Он хорошо работает с Excel и другими приложениями MS, и вы можете запустить его либо из командной строки, либо дважды щелкнув по файлу.

Вам необходимо добавить значения для этих двух аргументов или

Если вы используете командную строку, вы можете передать параметры srccsvfile и tgtxlsfile, например:

cscript nameoffile.vbs test.csv test.xls

Вот пример кода. Сохранить как nameoffile.vbs:

srccsvfile = Wscript.Arguments(0)  
tgtxlsfile = Wscript.Arguments(1)  

'Create Spreadsheet
'Look for an existing Excel instance.
On Error Resume Next ' Turn on the error handling flag
Set objExcel = GetObject(,"Excel.Application")
'If not found, create a new instance.
If Err.Number = 429 Then  '> 0
  Set objExcel = CreateObject("Excel.Application")
End If

objExcel.Visible = false
objExcel.displayalerts=false

'Import CSV into Spreadsheet
Set objWorkbook = objExcel.Workbooks.open(srccsvfile)
Set objWorksheet1 = objWorkbook.Worksheets(1)

'Adjust width of columns
Set objRange = objWorksheet1.UsedRange
objRange.EntireColumn.Autofit()
'This code could be used to AutoFit a select number of  columns
'For intColumns = 1 To 17
'    objExcel.Columns(intColumns).AutoFit()
'Next

'Make Headings Bold
objExcel.Rows(1).Font.Bold = TRUE

'Freeze header row
With objExcel.ActiveWindow
 .SplitColumn = 0
 .SplitRow = 1
End With
objExcel.ActiveWindow.FreezePanes = True

'Add Data Filters to Heading Row
objExcel.Rows(1).AutoFilter

'set header row gray
objExcel.Rows(1).Interior.ColorIndex = 15
'-0.249977111117893


'Save Spreadsheet, 51 = Excel 2007-2010 
objWorksheet1.SaveAs tgtxlsfile, 51

'Release Lock on Spreadsheet
objExcel.Quit()
Set objWorksheet1 = Nothing
Set objWorkbook = Nothing
Set ObjExcel = Nothing
...