如何将Excel中的一个工作表导出到单个htm文件中?

时间:2016-07-13 17:20:35

标签: excel powershell

我无法将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

1 个答案:

答案 0 :(得分:3)

在我们澄清了更多内容后,我再次根据您的期望调整了您的代码。特别是,请查看使用#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