Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

aleanjos

[Resolvido] Javasript para imprimir tabelas

Recommended Posts

A função printTable recebe o ID de uma tabela qualquer, o número de colunas que se quer imprimir e o id do iframe onde ela será jogada para impressão.

Exemplo de uso:

No seu código html você cria um iframe oculto: <iframe id="f1" src="about:blank" height="0%"></iframe>

você cria também uma tabela com um id qualquer: por exemplo, tbl3.

E um botão para imprimir o número de colunas que você deseja (nesse caso, as duas primeiras colunas da tabela): <input type="button" value="Imprimir" onclick="java script:printTable('tbl3', 2, 'f1');">

Esse código já me quebrou muitos galhos pois funciona perfeitamente com Internet Explorer mas agora estou precisando adapta-lo para funcionar no Firefox.

Se puderem ajudar!!!

 

A função é a seguinte:

<script LANGUAGE="JavaScript" TYPE="text/javascript">

function printTable(tblId, columnsPerPrint, iframeId)

{

var win = document.getElementById(iframeId).contentWindow;

var doc = win.document;

doc.body.innerHTML = document.getElementById(tblId).outerHTML;

var tbl = doc.getElementById(tblId);

if(tbl.rows.length > 0)

{

printBlocks = Math.ceil(tbl.rows[0].cells.length / columnsPerPrint);

}

// Do each block

for(var i = 0; i < printBlocks; i++)

{

// Do every row

for(var j = 0; j < tbl.rows.length; j++)

{

// Do every column

for(var k = 0; k < tbl.rows[j].cells.length; k++)

{

if(k >= i * columnsPerPrint && k < ((i + 1) * columnsPerPrint)) // Show desired block

{

tbl.rows[j].cells[k].style.display = "inline";

}

else // Hide the rest

{

tbl.rows[j].cells[k].style.display = "none";

}

}

}

win.focus(); // <------- Added

win.print();

}

}

</SCRIPT>

Compartilhar este post


Link para o post
Compartilhar em outros sites

modifique o script, testei e funcionou no IE e no FF, de uma olhada

function printTable(tblId, columnsPerPrint, iframeId)
{
	var win = document.getElementById(iframeId).contentWindow;
	var doc = win.document;
	//FF
	if(navigator.appName.indexOf("Microsoft") == -1){
		var tab = document.createElement("table");
		tab.id = document.getElementById(tblId).id;
		
		tab.innerHTML = document.getElementById(tblId).innerHTML;
		//doc.body.innerHTML = tab.innerHTML;
		doc.body.innerHTML ="";
		doc.body.appendChild(tab);
	}else{
		doc.body.innerHTML = document.getElementById(tblId).outerHTML;
	}

	var tbl = doc.getElementById(tblId);
	if(tbl.rows.length > 0)
	{
	printBlocks = Math.ceil(tbl.rows[0].cells.length / columnsPerPrint);
	}
	// Do each block
	for(var i = 0; i < printBlocks; i++)
	{
	// Do every row
	for(var j = 0; j < tbl.rows.length; j++)
	{
	// Do every column
	for(var k = 0; k < tbl.rows[j].cells.length; k++)
	{
	if(k >= i * columnsPerPrint && k < ((i + 1) * columnsPerPrint)) // Show desired block
	{
	tbl.rows[j].cells[k].style.display = "inline";
	}
	else // Hide the rest
	{
	tbl.rows[j].cells[k].style.display = "none";
	}
	}
	}
	win.focus(); // <------- Added
	win.print();
	}
}

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caixa alta é proibido(todas letras em maiusculo no titulo):

Regras: http://forum.imasters.com.br/index.php?act=Help

 

Leia todas e de enfase a 09ª Regra

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí pessoal, foi mal colocar o título do tópico em caixa alta... ainda não tinha lido as regras do forum!!!

 

Otata muito obrigado você solucionou o problema com o script no firefox.

 

ps.: como faço para declarar o tópico como resolvido??

Compartilhar este post


Link para o post
Compartilhar em outros sites

apenas moderadores fazer isso

 

apenas declare que resolveu quando isso ocorrer

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.