Tabloları bir web sayfasından Excel'e nasıl aktarabilirim

Tabloları bir web sayfasından Excel'e nasıl aktarabilirim? Dışa aktarımın tüm biçimlendirmeyi ve renkleri içermesini istiyorum.

Bu bir php ama belki javascript olarak değiştirebilirsiniz:

<?php>
$colgroup = str_repeat("",5);
$data = "";
$time = date("M d, y g:ia");
$excel = "



<meta http-equiv=\"Content-type\" content=\"text/html;charset=utf-8\" />

.xl4566 {
color: red;
}



<div id=\"Classeur1_16681\" align=center x:publishsource=\"Excel\">
<table x:str border=0 cellpadding=0 cellspacing=0 style=\"border-collapse: collapse\">
$colgroup
<tr><td class=xl2216681>Col1</td><td class=xl2216681>Col2</td><td class=xl2216681 >Col3</td><td class=xl2216681 >Col4</td><td class=xl2216681 >Col5</td></tr>
<tr><td class=xl4566>1</td><td>2</td><td>3</td><td>4</td><td>5</td></tr>
</table>
</div>

";
  $fname = "Export".time().".xls";
  $file = fopen($fname,"w+");
  fwrite($file,$excel);
  fclose($file);
  header('Content-Type: application/vnd.ms-excel');
  header('Content-Disposition: attachment; filename="'.basename($fname).'"');
  readfile($fname);
  unlink($fname); ?> 
Yorumlar (0)

Bu aslında düşündüğünüzden daha basittir: "Sadece" HTML tablosunu (yani: Tablo için HTML kodunu) panoya kopyalayın. Excel HTML tablolarının kodunu nasıl çözeceğini bilir; hatta öznitelikleri korumaya çalışacaktır.

Zor kısım "tabloyu panoya kopyalamak" çünkü JavaScript'ten panoya erişmenin standart bir yolu yoktur. Bu blog yazısına bakın: JavaScript ile Sistem Panosuna Erişim - Kutsal Kase mi?

Şimdi tek ihtiyacınız olan HTML olarak tablo. Ben jQuery ve html() yöntemini öneriyorum.

Yorumlar (0)

Bunu otomatik olarak yapmanın pratik iki yolu vardır, ancak tüm tarayıcılarda yalnızca bir çözüm kullanılabilir. Öncelikle excel sayfasını oluşturmak için open xml spesifikasyonunu kullanmalısınız. Microsoft'un bu formatı eski ofis sürümleri için de kullanılabilir hale getiren ücretsiz eklentileri mevcuttur. Open xml, Office 2007'den beri standarttır. Sunucu tarafı ya da istemci tarafı olmak üzere iki yol vardır.

İstemci tarafı uygulaması, yalnızca verilerin URL'si yerine verileri depolamanıza olanak tanıyan yeni bir CSS standardı kullanır. Bu harika bir yaklaşım çünkü herhangi bir servercall'a ihtiyacınız yok, sadece veri ve biraz javascript. Dezavantajı ise microsoft'un mevcut IE (IE9'u bilmiyorum) sürümlerinde bunun tüm parçalarını desteklememesi. Microsoft verinin bir resim olmasını kısıtlıyor ama bizim bir belgeye ihtiyacımız olacak. Firefox'ta oldukça iyi çalışıyor. Benim için IE öldürücü noktaydı.

Diğer yol ise sunucu tarafında bir uygulama kullanmaktır. Tüm diller için çok sayıda açık XML uygulaması olmalıdır. Sadece bir tanesini yakalamanız gerekir. Çoğu durumda, bir Belge ile sonuçlanacak şekilde bir Viewmodel'i değiştirmenin en basit yolu olacaktır, ancak elbette tüm verileri İstemci Tarafından sunucuya geri gönderebilir ve aynı şeyi yapabilirsiniz.

Yorumlar (1)