使用文件夹路径计算excel行

时间:2017-02-21 15:24:21

标签: powershell

我有一个名为 customer 的文件夹,根据每个客户名称有多个文件夹,在每个客户下我都有优秀的工作表,其中包含行的信息。

我想将此文件结构提取到excel中,其中包含每个excel中包含的文件路径和行数。

我可以使用以下程序列出文件名。

  
      
  1. Win-E 打开Windows资源管理器,找到您需要文件列表的文件夹。

  2.   
  3. 按住 Shift 键,右键单击该文件夹并选择在此处打开命令窗口。这仅适用于文件夹,而不适用于库。   库指向特定文件夹,因此请选择位于的文件夹   在图书馆图标下。如果库指向驱动器,请单击鼠标右键   文件夹树中的驱动器号。

  4.   
  5. 输入不含引号的dir /b > dirlist.txt,然后按 Enter 。这将创建一个仅包含文件名的列表。包括文件大小和   日期,请输入dir > dirlist.txt。还要包含文件   子目录,键入dir /b /s > dirlist.txt以创建列表   具有完整目录结构名称的文件,例如   的 C:\文件夹\子目录\ file.txt的

  6.   
  7. 打开Microsoft Excel并按 Ctrl-O 打开“打开”对话框窗口。

  8.   
  9. 导航到包含这些文件的文件夹。单击文件类型下拉菜单,然后选择文本文件( .prn, .txt,*。cvs)。   双击 dirlist.txt 将其打开。

  10.   
  11. 单击“文本导入向导”窗口中的完成以使用默认选项并将目录列表导入Excel。

  12.   

请帮助计算行数。

1 个答案:

答案 0 :(得分: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