2017-02-21 20 views
-1

我有一個文件夾名爲客戶,根據每個客戶名稱下有多個文件夾,並且在每個客戶下我有擅長包含行中明細信息的工作表。使用文件夾路徑計算excel行

我想將這個文件結構解壓縮爲包含每個excel中包含的文件路徑和行數的excel。

我可以使用下面的過程列出文件名。

  1. 贏-E打開Windows資源管理器,並找到您需要的文件列表中的文件夾。

  2. 按住Shift鍵,右鍵單擊該文件夾並選擇打開命令窗口在這裏。這隻適用於文件夾,而不是庫。 庫指向一個特定的文件夾,所以選擇位於庫圖標下方的文件夾 。如果庫指向驅動器,請右鍵單擊文件夾樹中的驅動器號爲 。

  3. 類型dir /b > dirlist.txt不含引號並按輸入。這將只創建一個包含文件名的列表。要包含文件大小和 日期,請改爲輸入dir > dirlist.txt。要包含 子目錄中的文件,請鍵入dir /b /s > dirlist.txt以創建具有完整目錄結構名稱的 文件列表,如 C:\ folder \ subdirectory \ file.txt

  4. 打開Microsoft Excel並按Ctrl-O打開打開對話窗口。

  5. 導航到包含文件的文件夾。單擊文件類型下拉菜單並選擇文本文件(.prn, .txt,*。cvs)。 雙擊dirlist.txt將其打開。

  6. 單擊在文本導入嚮導窗口中完成以使用默認選項並將目錄列表導入Excel。

請還指望行幫助。

+2

到目前爲止您嘗試過什麼?你有沒有任何示例代碼,或者你已經看過的鏈接? – TechSpud

+0

Linux似乎是處理Excel文件的不當工具。和StackOverflow是關於幫助人們修復他們現有的代碼。請閱讀http:// stackoverflow。com/help/how-to-ask,http://stackoverflow.com/help/dont-ask,http://stackoverflow.com/help/mcve並參加[tour](http://stackoverflow.com/巡演),然後在這裏發佈更多Q​​值。祝你好運。 – shellter

回答

1

你的問題是模糊的。我刪除了不必要/錯誤的標籤。 Excel文件可以有多個工作表,因此您必須迭代/遞歸給定的開始文件夾中的文件以及工作簿中的所有工作表。輸出是一個包含問題屬性的表格。應該很容易保存爲csv。

$BaseFolder = "X:\Path\to\Customers" 
$xlCellTypeLastCell = 11 
$AllSheets = New-Object System.Collections.Generic.List[object] 
$Excel = New-Object -com excel.application 
$Excel.DisplayAlerts = "False" 
$XLfiles = Get-ChildItem -Path $BaseFolder -Filter *.xls* -File -Recurse 
ForEach ($XLfile in $XLfiles) { 
    $WorkBook = $Excel.workbooks.open($XLfile.FullName) 
    for ($i = 1; $i -le $WorkBook.sheets.count; $i++){ 
     $Sheet = $WorkBook.Sheets.Item($i) 
     $LastRow = $Sheet.UsedRange.SpecialCells($xlCellTypeLastCell).Row 

     $Obj = [pscustomobject][ordered]@{ 
      ExcelFPath= $XLfile.FullName 
      Customer = ($XLfile.Directory).Name 
      ExcelFile = $XLfile.Name 
      SheetNo = $i 
      RowCount = $LastRow 
     } 
     $AllSheets.add($obj) 
    } 
    $Excel.Workbooks.Close() 
} 
$AllSheets | Format-Table -auto 
## $AllSheets | Out-Gridview 
+0

非常好。所以*這*是我閱讀過的Powershell的力量。感謝分享!祝你們好運。 – shellter