2014-02-13 1 views
1

나는 PS에 대한 멍청한 반응을 보이며 CSV 파일 폴더를 XLS 또는 XLSX에 저장하는 데 문제가 있습니다. 나는 하나의 파일을 위해 그것을 할 수는 있지만 여러 번 잘못하고있는 것을 해결할 수는 없다.여러 CSV 파일을 XLS로 저장

CLS 
$path = "H:\My Documents\" 
$files = Get-ChildItem $path -include *.csv -recurse 
echo $files 
foreach($file in $files) { 
$objExcel=New-Object -com "Excel.Application" 
$objWorkbook=$objExcel.workbooks.open($file) 
$objWorksheet=$objWorkbook.Worksheets.Item(1) 

#insert COUNTIF formula into cell A8 
$strFormula = "=COUNTIF(I6:I1000," + [char](34) + ">0" + [char](34) + ")" 
$objExcel.Cells.Item(1, 8).Formula = $strFormula 

#Save as XLS 
$xlout=$file.Replace('.csv','xlsx') 
$objWorkbook.SaveAs($xlOut,51) 

$objWorkbook.Close() 
$objExcel.Quit() 
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel) 
} 

누군가 나를 도와 줄 수 있습니까?

답변

2

글쎄, 나는 근본적으로 잘못 아무것도 표시되지 않습니다,하지만 엑셀 개방에 문제가 신속한 연속적으로 폐쇄 할 수있다. Excel을 열고 닫을 시간 내에 루프를 이동하십시오.

CLS 
$path = "H:\My Documents\" 
$files = Get-ChildItem $path -include *.csv -recurse 
echo $files 
$objExcel=New-Object -com "Excel.Application" 
foreach($file in $files) { 
    $objWorkbook=$objExcel.workbooks.open($file) 
    $objWorksheet=$objWorkbook.Worksheets.Item(1) 

    #insert COUNTIF formula into cell A8 
    $strFormula = "=COUNTIF(I6:I1000," + [char](34) + ">0" + [char](34) + ")" 
    $objExcel.Cells.Item(1, 8).Formula = $strFormula 

    #Save as XLS 
    $xlout=$file.FullName.Replace('.csv','.xlsx') 
    $objWorkbook.SaveAs($xlOut,51) 

    $objWorkbook.Close() 
} 
$objExcel.Quit() 
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($objExcel) 

편집 :
I 전체 이름 요소를 끌어, 또한 그것이 .을 잃고 기본적으로 "somefilexlsx"로 "somefile.csv"를 변경 한 이후 교체의 고정으로 업데이트 $의 xlout.

+0

없음을 빕니다 - 내가 얻을 : 예외는 "2"인수 (들) "교체"전화 : "지정된 파일을 찾을 수 없습니다." 줄에 15 문자 : 5 + $ xlout = $ file.Replace ('. CSV', 'XLSX') + ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified (:) [] MethodInvocationException + FullyQualifiedErrorId : FileNotFoundException이 "2"의 인수 (들) "이름으로 저장"을 호출 – Dylan

+0

예외 : "파일 액세스 할 수 없습니다 다음 중 하나를 시도해보십시오... 지정된 폴더가 존재하는지 확인 • 을 • 읽기 전용이 아닌 파일이 들어 있는지 확인 폴더를 확인 • 만드 확인 파일 이름은 다음을 포함하지 않는 문자 : < >? [] : | 또는 * • 파일/경로 이름이 218자를 초과하지 않는지 확인하십시오. " – Dylan

+0

줄에 16 문자 : 5 + $ objWorkbook.SaveAs ($ xlOut 51) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ + CategoriesInfo : NotSpecified : (:) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation – Dylan