TUTOS.EU

Excel to HTML

Convertir un fichier excel en HTML

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 = "&nbsp"
		}
		$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 Copier le code

2