Le script
#Version du 7 décembre 2012
#Tranforme un tableau Excel en fichier HTML
Clear-Host
function Get-ScriptDirectory
{
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
$ScriptFolderPath = Split-Path $Invocation.MyCommand.Path
return $ScriptFolderPath
}
# -----------------------------------------------------
function Release-Ref ($ref) {
([System.Runtime.InteropServices.Marshal]::ReleaseComObject(
[System.__ComObject]$ref) -gt 0)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
}
# -----------------------------------------------------
$NomFichierExcel = "MyExcelFile.xls"
$NomFichierHTML = "MyExcelInHTML.html"
$EmplacementFichierExcel = Get-ScriptDirectory
$EmplacementFichierExcel = "$EmplacementFichierExcel\$NomFichierExcel"
$EmplacementFichierHTML = Get-ScriptDirectory
$EmplacementFichierHTML = "$EmplacementFichierHTML\$NomFichierHTML"
#Création du fichier vierge
$MonFichierHTML = New-Item -type file $EmplacementFichierHTML -Force
$objExcel = new-object -comobject excel.application
$objExcel.Visible = $True
$objWorkbook = $objExcel.Workbooks.Open($EmplacementFichierExcel)
$objWorksheet = $objWorkbook.Worksheets.Item(1)
#Exemple de méthodes
#$Workbook | Get-Member
#$Sheet | Get-Member
$CompteurLigne = 2
#On va déterminer le nombre de lignes et colonnes
$NbrLignes = 0
$NbrColonnes = 0
#On commence par trouver le nombre de colonnes
$Arreter = 0
$CompteurCasesVides = 0
$CompteurColonne = 1
Do {
$MaValeur = $objWorksheet.Cells.Item(1, $CompteurColonne).Value()
if ($MaValeur.Length -igt 0){
#$CompteurColonne = $CompteurColonne + $CompteurCasesVides #On comptabilise aussi les colonnes vides trouvées entre temps
$NbrColonnes = $CompteurColonne #On retient le nombre de colonnes
#On continu et on réinitialise
$CompteurColonne++
$CompteurCasesVides = 0 #On réinitialise le compteur
}
else{
$CompteurColonne++
$CompteurCasesVides++
}
if ($CompteurCasesVides -igt 3){$Arreter = 1} #Si on a plus de 3 cases vides consécutives, on arrête
}
While ($Arreter -ieq 0)
#Maintenant on va trouver le nombre de lignes
$Arreter = 0
$CompteurCasesVides = 0
$CompteurLigne = 1
Do {
$MaValeur = $objWorksheet.Cells.Item($CompteurLigne, 1).Value()
if ($MaValeur.Length -igt 0){
#$CompteurLigne = $CompteurLigne + $CompteurCasesVides #On comptabilise aussi les colonnes vides trouvées entre temps
$NbrLignes = $CompteurLigne #On retient le nombre de colonnes
#On continu et on réinitialise
$CompteurLigne++
$CompteurCasesVides = 0 #On réinitialise le compteur
}
else{
$CompteurLigne++
$CompteurCasesVides++
}
if ($CompteurCasesVides -igt 3){$Arreter = 1} #Si on a plus de 3 cases vides consécutives, on arrête
}
While ($Arreter -ieq 0)
$MyLine = ""
add-content $MonFichierHTML "<TABLE style=""border-style: solid;border-width: 3px"">" #Ecriture de la première ligne
for ($CompteurLigne=1;$CompteurLigne -le $NbrLignes; $CompteurLigne++) {
#$MyLine = "`t<TR style=""border-style: solid;border-width: 1px;border-collapse: collapse;"">"
$MyLine = "`t<TR>"
for ($CompteurColonne=1;$CompteurColonne -le $NbrColonnes; $CompteurColonne++) {
$MaValeur = $objWorksheet.Cells.Item($CompteurLigne, $CompteurColonne).Value()
if ($MaValeur.Length -igt 0){
$MaValeur = $MaValeur.Trim()
$MaValeur = $MaValeur.Replace("`n","<br>")
}
else{
$MaValeur = " "
}
$MyLine = $MyLine + "<TD style=""padding: 10px;"">" + $MaValeur + "</TD>"
}
$MyLine = $MyLine + "</TR>"
add-content $MonFichierHTML $MyLine
}
add-content $MonFichierHTML "</TABLE>"
#Fermeture d'excel
$objExcel.Quit()
#On libère les objets
$a = Release-Ref($objWorksheet)
$a = Release-Ref($objWorkbook)
$a = Release-Ref($objExcel)
Lien vers le fichier : cliquez ici