【问题标题】:How do I export just one worksheet in Excel to a single htm file?如何仅将 Excel 中的一个工作表导出到单个 htm 文件?
【发布时间】:2016-07-13 17:20:34
【问题描述】:

我无法将 Excel 工作簿中的 一个 工作表保存为 单个 .htm 文件。

我知道如果我打开 Excel,打开我的工作簿,选择我想要的工作表,然后执行“另存为”文件类型 .htm,它将起作用。每次我编写代码时,我都会得到“Hitlist.htm”加上一个名为“Hitlist_files”的文件夹,其中包含所有样式表等。不幸的是,在 powershell 中,它会“另存为”所有其他数据和补充文件(额外的文件夹,样式规范等)

帮助。代码如下。

#Create and get my Excel Obj
$excel = New-Object -comobject Excel.Application
$excel.visible=$false
$excel.DisplayAlerts=$false
$UserWorkBook = $excel.Workbooks.Open("e:\hitlist\hitlist.xlsx")

#Select first Sheet
$UserWorksheet = $UserWorkBook.Worksheets.Item(1)

#HitList File name and type
$hitlist = "E:\HitList\Hitlist.htm"
$xlHtml = 44

#Save, close, and clean up
#I tried this too...no go - $UserWorkBook.SaveAs($hitlist,$xlHtml)
$UserWorksheet.SaveAs($hitlist,$xlHtml)
$UserWorkBook.close()
$excel.quit()
$excel = $null

【问题讨论】:

  • 要清楚 - 您的最后一行,".. 即使我将工作簿文件更改为只有一张纸!" 您是说您验证了 @ 987654322@ 工作簿只有一张,但 HTML 输出文件显示了多张数据?
  • 含义:即使我删除了所有其他工作表,它也会创建“Hitlist_files”文件夹。
  • 如果您查看该文件夹,它是 HTML 的参考。它的数据不应超过您指定的工作表(在位置一)。您确定您看到的是其他工作表,而不是单个工作表的数据引用?
  • 我看到了一个 filelist.xml、一个 sheet001.htm、stylesheet.css 和一个 tabstrip.htm。我想要的是一个独立的 .htm 文件,就像您要在 Excel 中执行另存为、htm 并只选择要发布的单个工作表。
  • 知道了。请尝试使用45,而不是使用44。如果这对您有用,请告诉我们,我将作为答案发布给您解释。 注意:您需要将文件扩展名设为.mhtml 而不仅仅是.html

标签: excel powershell


【解决方案1】:

在我们进一步澄清之后,我再次根据您的期望调整了您的代码。特别是,查看以#changed-grav 表示的任何行以了解我对您现有代码的修改,或者查看最后 (#added-grav) 以了解我添加的一些额外步骤以符合确切的规范:

(经过全面测试,似乎完全按照您的要求工作 - 但我为测试做了一些修改,所以如果我没有将值改回您需要的值,请告诉我)

#Create and get my Excel Obj
$excel = New-Object -comobject Excel.Application
$excel.visible=$false
$excel.DisplayAlerts=$false
$UserWorkBook = $excel.Workbooks.Open("e:\hitlist\hitlist.xlsx")

#Select first Sheet
$UserWorksheet = $UserWorkBook.Worksheets.Item(1)

#HitList File name and type
$hitlistCSV = "e:\hitlist\hitlist.csv" #changed-grav
$hitlistHTML = "e:\hitlist\hitlist.htm" #changed-grav
$xlCSV = 6  #changed-grav

#Save, close, and clean up
$UserWorksheet.SaveAs($hitlistCSV,$xlCSV) #changed-grav
$UserWorkBook.close()
$excel.quit()
$excel = $null

#new functionality, to import the CSV and then export as HTM
#added-grav START
$htmlData = Get-Content $hitlistCSV | ConvertFrom-CSV | ConvertTo-HTML
Set-Content $hitlistHTML $htmlData
Remove-Item $hitlistCSV
#added-grav END

【讨论】:

  • 如果我有足够的代表支持你,我会的。格雷夫,你这个男人!!!太棒了。感谢所有的帮助。希望我能报答你。
  • 很高兴我们终于将其隔离并为您解决了问题。 ;)
猜你喜欢
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-30
  • 1970-01-01
相关资源
最近更新 更多