#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 "" #Ecriture de la première ligne for ($CompteurLigne=1;$CompteurLigne -le $NbrLignes; $CompteurLigne++) { #$MyLine = "`t" $MyLine = "`t" 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","
") } else{ $MaValeur = " " } $MyLine = $MyLine + "" } $MyLine = $MyLine + "" add-content $MonFichierHTML $MyLine } add-content $MonFichierHTML "
" + $MaValeur + "
" #Fermeture d'excel $objExcel.Quit() #On libère les objets $a = Release-Ref($objWorksheet) $a = Release-Ref($objWorkbook) $a = Release-Ref($objExcel)