X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Генерация html таблиц в excel
Gluk
Gluk
Topic Starter сообщение 14.2.2008, 19:46; Ответить: Gluk
Сообщение #1


Хочется чтобы таблица генерировала html таблицу в excel файл (и обратно), причем не портился внешний вид (по нажатию определенной кнопки). Возможно ли это (если не скриптами то как).

<html>
<head>
<title>Сортировка таблицы средствами JavaScript</title>
<meta http-equiv="Content-type" content="text/html; charset=Windows-1251">
<script language="JavaScript" type="text/javascript">
var txt = [];
var flag;
var sorted;

function upCs( str, param ) {
var tmpStr = str.substring( 0, 1 ).toUpperCase() + str.substring( 1 );
if( !param )
return tmpStr;
var separator = tmpStr.indexOf( param );
var retStr = tmpStr;
if( separator != -1 )
retStr = tmpStr.substring( 0, separator );

while( separator != -1 ) {
tmpStr = tmpStr.substr( separator + 1, 1 ).toUpperCase() +
tmpStr.substring( separator + 2 );
separator = tmpStr.indexOf( param );
if( separator != -1 )
retStr += param + tmpStr.substring( 0, separator );
else
retStr += param + tmpStr;
}

return retStr;
}

function weight( str ) {
var retArray = [];

for( var i = 0; i < str.length; i++ ) {
var tmp = str.charCodeAt( i );
if( tmp >= 1046 && tmp < 1078 )
tmp++;
else if( tmp == 1025 )
tmp = 1046;
else if( tmp >= 1078 )
tmp++;
else if( tmp == 1105 )
tmp = 1078;
retArray[ i ] = tmp;
}

return retArray;
}

function fillArray( years, books, authors ) {
authors = upCs( authors, " " );
authors = upCs( authors, "-" );
books = upCs( books, "" );

this.years = years;
this.yweight = weight( years );
this.books = books;
this.bweight = weight( books );
this.authors = authors;
this.aweight = weight( authors );
}

function isLow( low, high, type ) {
var len1 = low[ type ].length;
var len2 = high[ type ].length;
var length = len1 < len2 ? len1 : len2;

for( var i = 0; i < length; i++ ) {
var str1 = low[ type ][ i ];
var str2 = high[ type ][ i ];
if( str1 < str2 )
return true;
if( str1 > str2 )
return false;
}

if( len1 < len2 )
return true;
return false;
}

function quickSort( l, h, type ) {
var low = l;
var high = h;
var rt = eval( "txt[ " + Math.round( ( l + h ) / 2 ) + " ]" );
var middle = new fillArray( rt.years, rt.books, rt.authors );

do {

while( isLow( eval( "txt[ " + low + " ]" ), middle, type ) )
low++;

while( isLow( middle, eval( "txt[ " + high + " ]" ), type ) )
high--;

if( low <= high ) {
var temp = txt[ low ];
txt[ low++ ] = txt[ high ]
txt[ high-- ] = temp;
}
} while( low <= high );

if( l < high )
quickSort( l, high, type );
if( low < h )
quickSort( low, h, type );
}


txt[ 0 ] = new fillArray( "1959", "фрейд", "сартр жан-поль" );
txt[ 1 ] = new fillArray( "1940", "подростки", "сэлинджер джером" );
txt[ 2 ] = new fillArray( "1946", "пена дней", "виан борис" );
txt[ 3 ] = new fillArray( "1948", "осадное положение", "камю альбер" );
txt[ 4 ] = new fillArray( "1899", "об иноческой жизни", "рильке райнер мария" );
txt[ 5 ] = new fillArray( "1849", "аннабель Ли", "по эдгар" );
txt[ 6 ] = new fillArray( "1917", "дагон", "лавкрафт говард" );
txt[ 7 ] = new fillArray( "1915", "процесс", "кафка франц" );
txt[ 8 ] = new fillArray( "1989", "египет Рамсесов", "монтэ пьер" );
txt[ 9 ] = new fillArray( "1932", "мастер и Маргарита", "булгаков михаил" );


function createTable( cStart, cType, cSize, cChange ) {
var tabbd = document.getElementById( "tablebody" );

if( !tabbd ) {
var table = document.getElementById( "table" );
var tbody = document.createElement( "tbody" );
tbody.id = "tablebody";
table.appendChild( tbody );
tabbd = document.getElementById( "tablebody" );
}

while( tabbd.hasChildNodes() ) {
var tmp = tabbd.childNodes[ 0 ];
tabbd.removeChild( tmp );
}


for( var counter = cStart; eval( counter + cType + cSize );
eval( "counter" + cChange ) ) {
var tr = document.createElement( "tr" );

var td = document.createElement( "td" );
var tdtxt = document.createTextNode( txt[ counter ].years );
td.appendChild( tdtxt );
tr.appendChild( td );
td = document.createElement( "td" );
tdtxt = document.createTextNode( txt[ counter ].books );
td.appendChild( tdtxt );
tr.appendChild( td );
td = document.createElement( "td" );
tdtxt = document.createTextNode( txt[ counter ].authors );
td.appendChild( tdtxt );
tr.appendChild( td );
tabbd.appendChild( tr );
}
}

function allocator( arg ) {

if( flag == arg ) {
if( sorted == "up" ) {
createTable( 0, "<", txt.length, "++" );
sorted = "down";
} else {
createTable( txt.length - 1, ">=", 0, "--" );
sorted = "up";
}
return;
}

quickSort( 0, txt.length - 1, arg );
createTable( 0, "<", txt.length, "++" );
flag = arg;
}

</script>
</head>
<body>

<table border="1" id="table">
<tr>
<td><a href="javascript:allocator( 'yweight' )">Год</a></td>
<td><a href="javascript:allocator( 'bweight' )">Книга</a></td>
<td><a href="javascript:allocator( 'aweight' )">Автор</a></td>
</tr>
<tbody id="tablebody"></tbody>
</table>

<script language="JavaScript" type="text/javascript">
createTable( 0, "<", txt.length, "++" );
</script>

</body>
</html>
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 15.2.2008, 0:48; Ответить: Webmaster_hb
Сообщение #2


Gluk, передать данные в Excel никак не получится
а тем более назад
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Romko_hb
Romko_hb
сообщение 19.6.2009, 10:58; Ответить: Romko_hb
Сообщение #3


Очень даже получится
<script type="text/javascript">

function CreateExcelSheet()
{
    var x=myTable.rows
    var xls = new ActiveXObject("Excel.Application")
    xls.visible = true
    xls.Workbooks.Add

    for (i = 0; i < x.length; i++)
    {
        var y = x[i].cells
        for (j = 0; j < y.length; j++)
        {
            xls.Cells( i+1, j+1).Value =y[j].innerText;
        }
    }
}

</script>


</head>
<body marginheight="0" marginwidth="0">
<form>
<input type="button" onclick="CreateExcelSheet()" value="Create Excel Sheet">
</form>
<table border="1">
<tr> <b><td>Name </td> <td>Age</td></b></tr>
<tr> <td>Shivani </td> <td>25.00</td> </tr>
<tr> <td>Naren </td> <td>28.06</td> </tr>
<tr> <td>Logs</td> <td>57.09</td> </tr>
<tr> <td>Kas</td> <td>54</td> </tr>
<tr> <td>Sent </td> <td>26</td> </tr>
<tr> <td>Bruce </td> <td>7</td> </tr>
</table>
</body>

Надо конечно дальше в этом направлении покапать, чтобы понять как назначать формат, задавать объединение ячеек и т.п. но по сути возможно.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 19.6.2009, 11:29; Ответить: Apay
Сообщение #4


Romko, данная фишка работает только в ie, и то только если пользователь разрешил activex
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Romko_hb
Romko_hb
сообщение 19.6.2009, 11:38; Ответить: Romko_hb
Сообщение #5


в корпоративной среде это может быть как достаточным так и необходимым условием
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Rost_hb
Rost_hb
сообщение 21.6.2009, 22:37; Ответить: Rost_hb
Сообщение #6


Блин, первый раз вижу, чтобы в формат xls (Excel) с помощью Javacript данные генерировали. Вообще-то обычно передают данные на выход из базы в файл .csv, который открывается Excel-ем. Но это PHP.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Вёрстка HTML-писем
30 Vampler 28840 Вчера, 12:41
автор: Vampler
Открытая тема (нет новых ответов) Разработка/доработка сайтов Wordpress, HTML/CSS/JS
Вёрстка, перенос на WP, правки
9 malamut 3330 25.1.2024, 14:36
автор: malamut
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3291 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Залить html страницу на 20 доменов
6 TABAK 1681 22.5.2023, 16:24
автор: KORUP
Открытая тема (нет новых ответов) Сделать правки на html-странице
5 TABAK 2261 20.5.2023, 10:45
автор: EvilGomel


 



RSS Текстовая версия Сейчас: 28.3.2024, 22:37
Дизайн