我有一个名为 customer 的文件夹,根据每个客户名称有多个文件夹,在每个客户下我都有优秀的工作表,其中包含行的信息。
我想将此文件结构提取到excel中,其中包含每个excel中包含的文件路径和行数。
我可以使用以下程序列出文件名。
按 Win-E 打开Windows资源管理器,找到您需要文件列表的文件夹。
按住 Shift 键,右键单击该文件夹并选择在此处打开命令窗口。这仅适用于文件夹,而不适用于库。 库指向特定文件夹,因此请选择位于的文件夹 在图书馆图标下。如果库指向驱动器,请单击鼠标右键 文件夹树中的驱动器号。
输入不含引号的
dir /b > dirlist.txt
,然后按 Enter 。这将创建一个仅包含文件名的列表。包括文件大小和 日期,请输入dir > dirlist.txt
。还要包含文件 子目录,键入dir /b /s > dirlist.txt
以创建列表 具有完整目录结构名称的文件,例如 的 C:\文件夹\子目录\ file.txt的打开Microsoft Excel并按 Ctrl-O 打开“打开”对话框窗口。
导航到包含这些文件的文件夹。单击文件类型下拉菜单,然后选择文本文件( .prn, .txt,*。cvs)。 双击 dirlist.txt 将其打开。
- 醇>
单击“文本导入向导”窗口中的完成以使用默认选项并将目录列表导入Excel。
请帮助计算行数。
答案 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