Tabelle nach Word

Nici

Erfahrenes Mitglied
Hallo zusammen,

ich möchte Tabelle die in einem DIV-Tag eingefügt wurden, nach Word exportieren.
Mit Excell funktioniert dies so:
Code:
function exportStatisticTableToExcel() 
{ 
window.parent.frames("unten").cb.style.display = "block"; 

var xlMaximized = -4137; 
var xlMinimized = -4140; 
var xlNormal = -4143; 

var coll = resultDIV.all.tags("TABLE"); 
var rows, cells; 

if ( (coll != null) && (coll.length != 0) ) 
{ 

try { 
var ExcelApplication = new ActiveXObject("Excel.Application"); 
ExcelApplication.WindowState = xlMinimized; 
ExcelApplication.SheetsInNewWorkbook = coll.length; 
var workbook = ExcelApplication.Workbooks.Add(); 

for (var i=0; i { 
try { 
rows = coll(i).rows; 
if (rows.length >= 1) 
{ 

// pro Tabelle ein neues Worksheet 
try { 
workbook.Sheets(i+1).Name = coll(i).id; 
} 
catch(e) 
{} 

workbook.Sheets(i+1).Cells.Font.Name = "Arial"; 
workbook.Sheets(i+1).Cells.Font.Size = 8; 

for (var j=0; j { 
var cells = rows[j].cells; 
for (k=0; k workbook.Sheets(i+1).Cells((j+1),(k+1)).Value = cells[k].innerText; 
} 
workbook.Sheets(i+1).Rows("1:1").Font.Bold = true; 
workbook.Sheets(i+1).Range("A1").AutoFilter(); 
workbook.Sheets(i+1).Cells.Columns.AutoFit(); 
} 
} 
catch(e) 
{ 
alert("Fehler: " + e.description); 
} 
} 
ExcelApplication.WindowState = xlMaximized; 
ExcelApplication.visible = true; 
} 

catch(e) 
{ 
alert("MS Excel konnte nicht gestartet werden!\n\nEntweder verhindern Ihre Sicherheitseinstellungen\nim Browser den regulären Programmstart oder\ndas Programm wurde auf Ihrem Rechner\nnicht ordnungsgemäß installiert."); 
var ExcelApplication = null; 
return; 
} 
} 

else { 
alert("Keine Tabelle zum Export vorhanden ..."); 
return; 
} 

window.parent.frames("unten").cb.style.display = "none"; 
}
Kann mir jemand helfen wie ich das in Word umsetzte

Vielen Dank und Gruß,
Nici
 
Zuletzt bearbeitet von einem Moderator:
Nun ja... es gibt 2 Methoden, um das mit Word zu bewerkstelligen.

Eine korrekte...die ist ähnlich umständlich, wie die Excel-Variante.

Und eine andere...vielleicht nicht ganz koscher, aber viel bequemer.
Mit ihr kann man neben dem Text in der Tabelle in einem Rutsch alles übernehmen...Formate, Bilder, weitere HTML-Elemente, also eine echte Kopie der Tabelle.

Dafür muss im IE allerdings der Zugriff auf die Zwischenablage gestattet sein.(ist standardmässig der Fall)

Hier ein Beispiel für die letztere Methode:-)

Code:
<script type="text/JScript">
<!--

function exportStatisticTableToExcel()
{
    //Application-Objekt erzeugen
    objWord = new ActiveXObject("Word.Application");
    
    //Fenstergrösse normal
    objWord.WindowState = 0;
    
    //Neues Dokument erzeugen
    objWord.Documents.Add('Normal.dot');
    
    //Zeiger auf Dokument
    objDoc = objWord.ActiveDocument;
    
    //Textrange im Word-Dokument erzeugen
    objRngDoc = objDoc.Range(0,0);
    
    //Textrange im HTML-Dokument mit den Tabellen erzeugen(musst du gegebenfalls anpassen)
    objRngHtml = document.body.createTextRange();
    
    //Textrange im HTML-Dokument auf das div verschieben(ebenfalls anpassen)
    objRngHtml.moveToElementText(document.all.divId);
    
    //Textrange im HTML-Dokument selektieren
    objRngHtml.select();
    
    //Auswahl in Zwischenablage kopieren
    objRngHtml.execCommand('copy');

    //Inhalt der Zwischenablage ins Word-Dokument kopieren
    objRngDoc.paste();
    
    //Word-Dokument anzeigen
    objWord.visible=true;
        
} 
//-->
</script>

Es wird also praktisch das getan, was man machen würde, wenn man kein Skript hätte....Copy&Paste ;)

Falls dich die erste Methode interessiert, und was man mit Office noch so umherskripten kann...
MSDN:Office-Scripting-Referenz (ist zwar für VBS, die Sachen heissen für JScript aber ähnlich)

Eins muss ich allerdings noch anmerken:
Damit dies funktioniert, muss man im IE die "unsicheren" ActiveX-Objekte zulassen.
Auch, wenn du nix Böses vorhast....mit diesen unsicheren ActiveX-Objekten kann man ebenso auf Knopfdruck die komplette Festplatte freiräumen....und auch sonst alles auf dem Rechner tun, wonach das Herz begehrt.
Bevor du dich also in etwas verrennst....für den privaten Gebrauch kann man das ruhig verwenden... du selbst weisst ja schliesslich,
dass die Sache OK ist(kleiner Tipp: statt HTML bietet sich da HTA eher an)...

aber erwarte lieber nicht, dass jemand im Netz die Ausführung dieses oder ähnlicher Skripte gestattet.
 

Neue Beiträge

Zurück