返回列表 发帖
本帖最后由 5i365 于 2022-9-18 07:26 编辑

回复 4# idwma


我搜索到了下面的贴子, 感觉应该能用上
http://www.bathome.net/viewthread.php?tid=63417&highlight=epplus
贴子中的dll过期了, 我搜索了一下, 下载下面的模块文件, 不用安装, 里面有就那个dll直接拖出来就能用

https://www.powershellgallery.com/packages/ImportExcel/7.8.1#manual-download

试了一下, 真不错, 使用下面的代码能取到姓名的值
Add-Type -Path ".\EPPlus.dll"
$ex = New-Object OfficeOpenXml.ExcelPackage(".\a.xlsx")
$ex.Workbook.Worksheets[1].Cells["A1"].Value
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

本帖最后由 5i365 于 2022-9-18 10:05 编辑

回复 4# idwma


   另外, 上面的代码执行时会报如下错误:
ERROR: Method invocation failed because [System.__ComObject] does not contain a method named 'close'.
A.ps1 (7, 2): ERROR: At Line: 7 char: 2
ERROR: +     $b.close()
ERROR: +     ~~~~~~~~~~
ERROR:     + CategoryInfo          : InvalidOperation: (close:String) [], RuntimeException
ERROR:     + FullyQualifiedErrorId : MethodNotFound
ERROR:
ERROR: ipcsv : The member "����" is already present.


__________________________________________________________________________
还会弹一个对话框提示: 是否保存对 tmp.csv 的更改
__________________________________________________________________________
任务管理器里的 excel.exe  需要手动退出
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

本帖最后由 5i365 于 2022-9-18 05:43 编辑

回复 4# idwma

多谢!
还是我没有描述清楚! 我的意思更简单的说: 每个表中

姓名的值 如果在 D5
语文的值 如果在 G19
数学的值 如果在 W20
社会的值 如果在 P21
历史的值 如果在 AG21

这种情况下,如何先取到值?
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 3# 5i365
#@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
$a=new-object -com excel.application
$f=$env:tmp+'\tmp.csv'
$n='张三'
dir *.xlsx|%{
$b=$a.workbooks.open($_.fullname).sheets.item(1)
$b.saveas($f,6)
$b.close()
ipcsv $f -header 'a2','b2','c2','d2','e2'|?{$_.'a2' -eq $n}|%{
$b2+=$_.'b2'
$c2+=$_.'c2'
$d2+=$_.'d2'
$e2+=$_.'e2'
}
del $f
}
$a.quit()
'{0},{1},{2},{3}' -f $b2,$c2,$d2,$e2COPY

TOP

回复 2# idwma


多谢大侠帮忙,
想问一下, 怎样用B2 C2 D2 E2的坐标来取值, 因为有时表里面是不规则的, 用标头定位不准, 用字母+数字的坐标才准
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

#@&cls&powershell "type '%~0'|out-string|iex"&pause&exit
$a=new-object -com excel.application
$f=$env:tmp+'\tmp.csv'
$n='张三'
dir *.xlsx|%{
$b=$a.workbooks.open($_.fullname).sheets.item(1)
$b.saveas($f,6)
$b.close()
ipcsv $f|?{$_.'姓名' -eq $n}|%{$c+=$_.'语文'+$_.'数学'+$_.'社会'+$_.'历史'}
del $f
}
$a.quit()
$cCOPY

TOP

返回列表