Die Inhalte mehrzeiliger Textfelder können vom Benutzer formatiert werden und werden als HTML gespeichert. Wenn solche Texte mit Power Query in Excel angezeigt werden, sind die HTML-Tags sichtbar:
Leider gibt es in Power Query keine eingebaute Funktion zur Konvertierung von HTML zu einfachem Text, und auch reguläre Ausdrücke werden nicht unterstützt, mit ein paar kleinen Tricks klappt es dennoch recht gut, wahlweise der reine Text …
… oder einigermaßen hübsch formatiert:
Alle Funktionen und Beispiele zur Benutzung sind in dieser Arbeitsmappe für Excel 2013 enthalten.
Um die Funktionen nutzen zu können, muss das Das Power-Query-Plugin installiert sein.
Für Power-Query-Experten ist hier noch der Quellcode der Funktion:let
HtmlToText = (data as table, HtmlFieldName as text, NewTextFieldName as text) => let // Create a new column with the given name and type text
#“Duplicated Column“ = Table.DuplicateColumn(data, HtmlFieldName , NewTextFieldName ),
#“Changed Type“ = Table.TransformColumnTypes(#“Duplicated Column“,), // pretty-print HTML as plain text
#“Replaced Value1″ = Table.ReplaceValue(#“Changed Type“,“|“,“&pipe;“,Replacer.ReplaceText,{NewTextFieldName}),
#“Replaced Value2″ = Table.ReplaceValue(#“Replaced Value1″,“<br>“,“#(cr)#(lf)“,Replacer.ReplaceText,{NewTextFieldName}),
#“Replaced Value3″ = Table.ReplaceValue(#“Replaced Value2″,“<br/>“,“#(cr)#(lf)“,Replacer.ReplaceText,{NewTextFieldName}),
#“Replaced Value4″ = Table.ReplaceValue(#“Replaced Value3″,“<p“,“#(cr)#(lf)<p“,Replacer.ReplaceText,{NewTextFieldName}),
#“Replaced Value5″ = Table.ReplaceValue(#“Replaced Value4″,“</ol>“,“</ol>#(cr)#(lf)“,Replacer.ReplaceText,{NewTextFieldName}),
#“Replaced Value6″ = Table.ReplaceValue(#“Replaced Value5″,“</ul>“,“</ul>#(cr)#(lf)“,Replacer.ReplaceText,{NewTextFieldName}),
#“Replaced Value7″ = Table.ReplaceValue(#“Replaced Value6″,“<li“,“#(cr)#(lf) – <li“,Replacer.ReplaceText,{NewTextFieldName}), // remove HTML tags
#“Replaced Value8″ = Table.ReplaceValue(#“Replaced Value7″,“><„,“|“,Replacer.ReplaceText,{NewTextFieldName}),
#“Mod Column“ = Table.TransformColumns(#“Replaced Value8″,), // Replace common entity references with their representing characters
#“Expanded Text“ = Table.ExpandListColumn(#“Mod Column“, NewTextFieldName),
#“Trimmed Text“ = Table.TransformColumns(#“Expanded Text“,),
#“Replaced Value9″ = Table.ReplaceValue(#“Trimmed Text“,“"“,““““,Replacer.ReplaceText,{NewTextFieldName}),
#“Replaced Value10″ = Table.ReplaceValue(#“Replaced Value9″,“&“,“&“,Replacer.ReplaceText,{NewTextFieldName}),
#“Replaced Value11″ = Table.ReplaceValue(#“Replaced Value10″,“<“,“<„,Replacer.ReplaceText,{NewTextFieldName}),
#“Replaced Value12″ = Table.ReplaceValue(#“Replaced Value11″,“>“,“>“,Replacer.ReplaceText,{NewTextFieldName}),
#“Replaced Value13″ = Table.ReplaceValue(#“Replaced Value12″, „&pipe;“,“|“,Replacer.ReplaceText,{NewTextFieldName}), Result = #“Replaced Value13″
in
Result
in
HtmlToText
Der Code kann auch in dieser Textdatei eingesehen werden.