【问题标题】:Import/export-excel problem with powershellPowershell的导入/导出excel问题
【发布时间】:2021-05-25 00:12:29
【问题描述】:

所以我要做的就是导入一个包含大量购买的 excel 文件,然后选择其中包含“walmart”、“mcdonalds”和“burger king”字样的所有行。然后将结果导出回 excel 文件。我已经安装了excel模块。我尝试了很多东西,但我通常只会在导出文件中出现乱码。

我的excel文件有4列,“名称”列是B列。但是列没有名称,第一行是第一次购买。

请帮忙,谢谢。

编辑: 下面是一个例子(分号表示下一个单元格):

  1. ; 2021 年 2 月 1 日;从 blabla 购买商品; -25 美元; 400 美元(
  2. ; 2021 年 2 月 5 日;在麦当劳购买; -10 美元; 390 美元
  3. ; 2021 年 2 月 7 日;从随机公司购买; -30 美元; 360 美元
  4. ; 2021 年 2 月 7 日;从 X 公司购买; -15 美元; 345 美元
  5. ; 2021 年 2 月 9 日;从汉堡王购买; -7 美元;第338章

我想删除不包含我想要的单词的每一行/行,例如 mcdonalds 和 burger king, 并将结果导出到另一个 excel 文件,以便我可以找到这些购买的总和。

我不知道接下来要尝试什么,这是我学习 powershell 的第 4 周,我尝试过类似的东西

(import-excel "C:\purchases.xlsx") | select-string ".*chinese*.", 
".*burgerking*.", ".*mcdonalds*." | export-excel "C:\outfile.xlsx"

但这显然是不正确的。 我会尝试一些 user19702 提到的东西,谢谢你的帮助。

编辑 2:这适用于在 powershell 中过滤文件,但导出文件不起作用,输出文件为空白。这是代码和输出:

PS C:\Windows\System32> $purchase = Import-Excel 
"C:\Users\sonde\Desktop\personlig-prosjekter\pengebruk\visakort-3mnd.xlsx" - 
NoHeader | % { if($_ -match "visa") {write-host $_}}

@{P1=02.02.2021 00:00:00; P2=VISA VARE XXXXXXXXXX 01.02  0,00 
GOOGLE*YOUTUBE SUPER\INTERNET Kurs; P3=-50; P4=5725,16; P5=; P6=; P7=}

@{P1=02.02.2021 00:00:00; P2=VISA VARE XXXXXXXXXXX 01.02  0,00 GOOGLE 
*YouTube Super\g.co/helppay# Kurs; P3=-100; P4=10360,93; P5=; P6=; P7=}

@{P1=01.02.2021 00:00:00; P2=VISA VARE XXXXXXXXX 30.01  0,00 GOOGLE 
*Google Play Ap\g.co/helppay Kurs; P3=-29; P4=10460,93; P5=; P6=; P7=}

【问题讨论】:

  • 请显示您的代码,最好是一些经过净化的示例数据行,以便我们能够重现您的情况。请记住,我们看不到您的屏幕,也无法读懂您的想法。 ;-)(如果您发布代码或示例数据,请将它们格式化为代码。)

标签: excel string powershell filtering


【解决方案1】:

我假设:

  • mcdonaldsburger king等在第一列
  • 只有一张工作表
  • 没有表格
  • 整个工作表都是您的购买
  • 您的(空)列名在第 1 行中

那么这应该可以正常工作:

Import-Module importExcel
Import-Excel "C:\path\to\purchases.xlsx" -NoHeader -StartRow 2 | 
  where P1 -in ('mcdonalds','burger king','walmart') | 
  Export-Excel "C:\path\to\purchases-filtered.xlsx" -StartRow 2 -NoHeader
  • -NoHeader 告诉 Import-Excel 创建自己的列名:P1、P2、P3 等。
  • -StartRow 表示在读取或写入时要从顶部跳过多少行。

注意:如果为其他列添加列名,操作数据会简单得多

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2022-01-24
    • 2018-06-22
    • 2017-07-03
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    相关资源
    最近更新 更多