Что нового

Экспорт таблицы в .html файл

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Друзья, кто-нибудь может написать простенький алгоритм для сохранения следующей таблицы в html формате в "красивом" виде?

Код:
Global $aFunc[4][4] = _
	   [[3], _
		['MyFunc1', '1', '0x0000110E4', '0x771C110E4'], _
		['MyFunc2', '2', '0x000011120', '0x771C11120'], _
		['MyFunc3', '3', '0x0000111A8', '0x771C111A8']]

For $i = 1 To $aFunc[0][0]
	ConsoleWrite($aFunc[$i][0] & '   ' & $aFunc[$i][1] & '   ' & $aFunc[$i][2] & '   ' & $aFunc[$i][3] & @CR)
Next


NameIndexAddress1Address2
MyFunc110x0000110E40x771C110E4
MyFunc220x0000111200x771C11120
MyFunc330x0000111A80x771C111A8

Количество элементов в массиве может быть произвольным. Никаких проверок делать не нужно, только сам алгоритм. Цвет рамок можно сделать серым цветом , заголовок желтым, а цвет текста черным. Да, полученный .html файл не должен использовать .css и каких-либо внешних картинок.

Спасибо.
 

running-frag

why me?
Сообщения
441
Репутация
60
Не чистовой вариант, без оформления (но я ещё на сервере не тестил)

Код:
Global $aFunc[4][4] = [[3], ['MyFunc1', '1', '0x0000110E4', '0x771C110E4'], ['MyFunc2', '2', '0x000011120', '0x771C11120'], ['MyFunc3', '3', '0x0000111A8', '0x771C111A8']]
		

For $i = 1 To $aFunc[0][0]
    ;ConsoleWrite($aFunc[$i][0] & '   ' & $aFunc[$i][1] & '   ' & $aFunc[$i][2] & '   ' & $aFunc[$i][3] & @CR)
Next

Global $_body = ""

Func createTableFromArr ($_array)
	$_body = "<table cellspacing='0' cellpadding='0' border='1'>"&@CR
	$_body &= "<tr>"&@CR&"<td style='color:blue;background-color:yellow;'>Name</td>"&@CR&"<td>Index</td>"&@CR&"<td>Address1</td>"&@CR&"<td>Address2</td>"&@CR&"</tr>"&@CR
	
	For $i = 1 To $aFunc[0][0]
		$_body &= "<tr>"&@CR&"<td>"& $aFunc[$i][0] &"</td>"&@CR&"<td>"& $aFunc[$i][1] &"</td>"&@CR&"<td>"& $aFunc[$i][2] &"</td>"&@CR&"<td>"& $aFunc[$i][3] &"</td>"&@CR&"</tr>"&@CR
	Next
	
	$_body &= "</table>"&@CR
	
	Return $_body
EndFunc
	
ConsoleWrite (createtableFromArr ($aFunc))



Добавлено:
Сообщение автоматически объединено:

А ну и значения подставь правильно я отбалды писал. :rofl:


Добавлено:
Сообщение автоматически объединено:

Yashied [?]
Да, полученный .html файл не должен использовать .css и каких-либо внешних картинок.
В внутренний может? Ну типо
Код:
<style></style>
это можно сказать "внутреннее" CSS для страницы.


Добавлено:
Сообщение автоматически объединено:

Более читабельный глазами автоит. Цвета сам ставь я хрен его какие лучше, у меня всегда с этим траблы (с дизингом). ^_^
Код:
Global $aFunc[4][4] = [[3], ['MyFunc1', '1', '0x0000110E4', '0x771C110E4'], ['MyFunc2', '2', '0x000011120', '0x771C11120'], ['MyFunc3', '3', '0x0000111A8', '0x771C111A8']]
Global $_body = ""		
#cs
For $i = 1 To $aFunc[0][0]
    ConsoleWrite($aFunc[$i][0] & '   ' & $aFunc[$i][1] & '   ' & $aFunc[$i][2] & '   ' & $aFunc[$i][3] & @CR)
Next
#ce

Func createTableFromArr ($_array)
	$_body = "<table cellspacing='0' cellpadding='0' border='1' style ='text-align: center; border-collapse: collapse'>"&@CR
								
	$_body &= "<tr>"&@CR			; tr open
	$_body &= "<td style='color:blue; width: 100px; background-color:yellow;'>Name</td>"&@CR
	$_body &= "<td style='color:blue; width: 75px; background-color:yellow;'>Index</td>"&@CR
	$_body &= "<td style='color:blue; width: 125px; background-color:yellow;'>Address1</td>"&@CR
	$_body &= "<td style='color:blue; width: 125px; background-color:yellow;'>Address2</td>"&@CR
	$_body &= "</tr>"&@CR			; tr close
	
	
	For $i = 1 To $aFunc[0][0]
		$_body &= "<tr>"&@CR		; tr open
		$_body &= "<td style='color:#336699;'>"& $aFunc[$i][0] &"</td>"&@CR
		$_body &= "<td>"& $aFunc[$i][1] &"</td>"&@CR
		$_body &= "<td>"& $aFunc[$i][2] &"</td>"&@CR
		$_body &= "<td>"& $aFunc[$i][3] &"</td>"&@CR
		$_body &= "</tr>"&@CR		; tr close
	Next
	
	$_body &= "</table>"&@CR
	
	Return $_body
EndFunc
	
ConsoleWrite (createTableFromArr ($aFunc))


Тебе нужна только таблица? Или полностью .html файл? Если второе тогда можно поиграться с <style></style> что намного упростит всё дело. Я просто не знаю какие критерии.
PS: Это "InLine styles" т.е. с многочисленным использыванием тэга style.


Добавлено:
Сообщение автоматически объединено:

Если ширина динамическая
Код:
Global $aFunc1[4][10]
$aFunc1[0][0] = 3

$aFunc1[1][0] = 5
$aFunc1[1][1] = "11"
$aFunc1[1][2] = "12"
$aFunc1[1][3] = "13"
$aFunc1[1][4] = "14"
$aFunc1[1][5] = "15"

$aFunc1[2][0] = 5
$aFunc1[2][1] = "21"
$aFunc1[2][2] = "22"
$aFunc1[2][3] = "23"
$aFunc1[2][4] = "24"
$aFunc1[2][5] = "25"

$aFunc1[3][0] = 5
$aFunc1[3][1] = "31"
$aFunc1[3][2] = "32"
$aFunc1[3][3] = "33"
$aFunc1[3][4] = "34"
$aFunc1[3][5] = "35"


Func createTableFromArrEx ($_array)
	$_body = "<table cellspacing='0' cellpadding='0' border='1' style ='text-align: center; border-collapse: collapse'>"&@CR
								
	$_body &= "<tr>"&@CR		
	For $i = 1 To $aFunc1[1][0] 	
		$_body &= "<td style='color:blue; width: 125px; background-color:yellow;'>"&$aFunc1[1][$i]&"</td>"&@CR
	Next
	$_body &= "</tr>"&@CR		
		
								
	For $i = 2 To $aFunc1[0][0] 	
		
		$_body &= "<tr>"&@CR
		For $k = 1 To $aFunc1[$i][0]
			$_body &= "<td>"& $aFunc1[$i][1] &"</td>"&@CR
		Next
		$_body &= "</tr>"&@CR
		
	Next
	
	$_body &= "</table>"&@CR
	
	Return $_body
EndFunc 

ConsoleWrite (createTableFromArrEx ($aFunc1))
Но тут надо осторожно. Т.к. длинна массивом должно быть одинакова, в противном случае нужно менять алгоритм что уж очень сильно нас углубляет.


Добавлено:
Сообщение автоматически объединено:

Последний вариант без автоит, чистым html. Думаю проблем заменить алгоритм автоит не будет. Это если нам доступен <style> (всё пишется в одном файле html).
Код:
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css">
            table.sample {
                border-width: 0px;
                border-spacing: 0px;
                border-style: none;
                border-color: gray;
                border-collapse: collapse;
                background-color: white;
            }
            table.sample tr {
                border-width: 1px;
                padding: 1px;
                border-style: solid;
                border-color: green;
                background-color: white;
            }
            table.sample td {
                border-width: 1px;
                padding: 1px;
                width: 100px;
                text-align: center;
                border-style: solid;
                border-color: green;
                background-color: white;
            }
            table.sample td.innerClass {
                background-color: black;
                color: white;
            }
        </style>

    </head>

    <body>
        <table class="sample">
            <tr>
                <td class="innerClass">11</td>
                <td>12</td>
                <td>13</td>
                <td>14</td>
                <td>15</td>
            </tr>
            <tr>
                <td>21</td>
                <td>21</td>
                <td>21</td>
                <td>21</td>
                <td>21</td>
            </tr>
            <tr>
                <td>31</td>
                <td>31</td>
                <td>31</td>
                <td>31</td>
                <td>31</td>
            </tr>
        </table>
    </body>
</html>
Простота в том что мы создаём класс в <style> а потом подписываем его в любом месте (в зависимости как мы его прописали) где это нужно. Таким образом мы можем "подсветить" любую ячейку которая нам нужна (или ненужна). 8)
Если незнакома система <style> её можно получить через визивигер http://www.somacon.com/p141.php (гугл выдал).

PS: На этом я закончил... Йа СпаММер. :rofl:
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Мне нужно, чтобы после запуска скрипта создался .htm файл, который можно открыть в браузере... и будет все красиво. Нужно дополнить следующий код, чтобы $Text содержала сам .htm файл. Я не дружу с html, а разбираться сейчас нет времени.

:smile:

Код:
Global $aFunc[4][4] = _
       [[3], _
        ['MyFunc1', '1', '0x0000110E4', '0x771C110E4'], _
        ['MyFunc2', '2', '0x000011120', '0x771C11120'], _
        ['MyFunc3', '3', '0x0000111A8', '0x771C111A8']]

$Text = ''

For $i = 1 To $aFunc[0][0]
	
	...
	
Next

FileWrite('Test.htm', $Text)

ShellExecute('Test.htm')
 

running-frag

why me?
Сообщения
441
Репутация
60
Код:
Global $aFunc[4][4] = [[3], ['MyFunc1', '1', '0x0000110E4', '0x771C110E4'], ['MyFunc2', '2', '0x000011120', '0x771C11120'], ['MyFunc3', '3', '0x0000111A8', '0x771C111A8']]
Global $_body = ""     
Global $_head = ""

Global $_title = "This is simple table"; заголовок страницы СМЕНИ

Func sHtml ($_array)
	$_head =  "<html>"&@CR
    $_head &= "<head>"&@CR
	$_head &= "<title>"& $_title &"</title>"&@CR
	$_head &= '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'&@CR
	$_head &= '<style type="text/css">'&@CR
	$_head &= 'table.main'&@CR
    $_head &= '{'&@CR
	$_head &= 'margin: auto;'&@CR
	$_head &= 'border-spacing: 0px;'&@CR
	$_head &= 'border-collapse: collapse;'&@CR
    $_head &= '}'&@CR
    $_head &= 'table.main td'&@CR
    $_head &= '{'&@CR
    $_head &= 'border-width: 1px;'&@CR
	$_head &= 'padding: 2px 10px;'&@CR
    $_head &= 'width: 100px;'&@CR
    $_head &= 'text-align: center;'&@CR
    $_head &= 'border-style: solid;'&@CR
    $_head &= 'border-color: grey;'&@CR
    $_head &= '}'&@CR
    $_head &= 'table.main td.header'&@CR
    $_head &= '{'&@CR
    $_head &= 'background-color: yellow;'&@CR
    $_head &= 'color: black;'&@CR
    $_head &= 'font-weight: bold;'&@CR
    $_head &= '}'&@CR
    $_head &= '</style>'&@CR
    $_head &= '</head>'&@CR
	
	$_body = "<body>"&@CR
    $_body &= "<table class='main' align='center'>"&@CR
                               
    $_body &= "<tr>"&@CR
    $_body &= "<td class='header'>Name</td>"&@CR
    $_body &= "<td class='header'>Index</td>"&@CR
    $_body &= "<td class='header'>Address1</td>"&@CR
    $_body &= "<td class='header'>Address2</td>"&@CR
    $_body &= "</tr>"&@CR
   
   
    For $i = 1 To $aFunc[0][0]
        $_body &= "<tr>"&@CR
        $_body &= "<td>"& $aFunc[$i][0] &"</td>"&@CR
        $_body &= "<td>"& $aFunc[$i][1] &"</td>"&@CR
        $_body &= "<td>"& $aFunc[$i][2] &"</td>"&@CR
        $_body &= "<td>"& $aFunc[$i][3] &"</td>"&@CR
        $_body &= "</tr>"&@CR
    Next
   
    $_body &= "</table>"&@CR
    $_body &= "</body>"&@CR
    $_body &= "</html>"

	
	Local $_string = $_head & $_body
	
    Return $_string
EndFunc
   
Local $_html = sHtml($aFunc)
FileDelete ('Test.htm')
FileWrite('Test.htm', $_html)

ShellExecute('Test.htm')


upd: одной строки не было дописал "$_body &= "</html>""
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Я бы сделал так:

Код:
Global $aFunc[4][4] = _
		[[3], _
		['MyFunc1', '1', '0x0000110E4', '0x771C110E4'], _
		['MyFunc2', '2', '0x000011120', '0x771C11120'], _
		['MyFunc3', '3', '0x0000111A8', '0x771C111A8']]

$sHtml = _ArrayToHtml($aFunc, "Name|Index|Address1|Address2", "Table from Array")

$sHtml_File = @DesktopDir & '\Array_Table.html'

$hFile = FileOpen($sHtml_File, 2)
FileWrite($hFile, $sHtml)
FileClose($hFile)

ShellExecute($sHtml_File)

Func _ArrayToHtml($aArray, $sTableHeaders, $sHtmlTitle = "")
	Local $sHeader, $sBody, $aTableHeaders
	
	$sHeader = "<html>" & @CRLF
	$sHeader &= "   <head>" & @CRLF
	$sHeader &= "       <title>" & $sHtmlTitle & "</title>" & @CRLF
	$sHeader &= '       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">' & @CRLF
	$sHeader &= '       <style type="text/css">' & @CRLF
	$sHeader &= '           table.main' & @CRLF
	$sHeader &= '           {' & @CRLF
	$sHeader &= '               border-spacing: 0px;' & @CRLF
	$sHeader &= '               border-collapse: collapse;' & @CRLF
	$sHeader &= '               margin: auto;' & @CRLF
	$sHeader &= '           }' & @CRLF
	$sHeader &= '           table.main td' & @CRLF
	$sHeader &= '           {' & @CRLF
	$sHeader &= '               border-color: gray;' & @CRLF ;Цвет рамки
	$sHeader &= '               border-width: 2px;' & @CRLF ;Объём рамки
	$sHeader &= '               border-style: solid;' & @CRLF
	$sHeader &= '               padding: 2px 10px;' & @CRLF
	$sHeader &= '               width: 100px;' & @CRLF
	$sHeader &= '               text-align: center;' & @CRLF
	$sHeader &= '           }' & @CRLF
	$sHeader &= '           table.main tr.header' & @CRLF
	$sHeader &= '           {' & @CRLF
	$sHeader &= '               color: black;' & @CRLF ;Цвет текста заголовка
	$sHeader &= '               background-color: yellow;' & @CRLF ;Цвет фона заголовка
	$sHeader &= '               font-family: Arial;' & @CRLF ;Шрифт заголовка
	$sHeader &= '               font-weight: bold;' & @CRLF ;Жирность заголовка :)
	$sHeader &= '           }' & @CRLF
	$sHeader &= '           table.main tr.body' & @CRLF
	$sHeader &= '           {' & @CRLF
	$sHeader &= '               color: black;' & @CRLF ;Цвет текста ячейки
	$sHeader &= '               font-family: Arial;' & @CRLF ;Шрифт текста ячейки
	$sHeader &= '           }' & @CRLF
	$sHeader &= '       </style>' & @CRLF
	$sHeader &= '   </head>' & @CRLF
	
	$sBody = "  <body>" & @CRLF
	$sBody &= "     <table class='main' align='center'>" & @CRLF
	$sBody &= "         <tr class='header'>" & @CRLF
	
	$aTableHeaders = StringSplit($sTableHeaders, "|")
	
	For $i = 1 To $aTableHeaders[0]
		$sBody &= "             <td>" & $aTableHeaders[$i] & "</td>" & @CRLF
	Next
	
	$sBody &= "         </tr>" & @CRLF
	
	For $i = 1 To $aArray[0][0]
		$sBody &= "         <tr class='body'>" & @CRLF
		
		For $j = 0 To UBound($aArray, 2) - 1
			If $j >= $aTableHeaders[0] Then ExitLoop
			$sBody &= "             <td>" & $aArray[$i][$j] & "</td>" & @CRLF
		Next
		
		$sBody &= "         </tr>" & @CRLF
	Next
	
	$sBody &= "     </table>" & @CRLF
	$sBody &= " </body>" & @CRLF
	$sBody &= "</html>"
	
	Return $sHeader & $sBody
EndFunc
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Спасибо друзья. У меня есть несколько вопросов:

  • Как поменять шрифт? Нужен без засечек, например Arial для таблицы и Arial Bold для заголовка.
  • Как указать цвет текста?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied
Yashied сказал(а):
Спасибо друзья. У меня есть несколько вопросов:

  • Как поменять шрифт? Нужен без засечек, например Arial для таблицы и Arial Bold для заголовка.
  • Как указать цвет текста?

Я поправил свой пример, добавил комментарии.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Спасибо.
 

vcomp71

Осваивающий
Сообщения
431
Репутация
25
Если бы было больше времени - то все стили надо в таблицу стилей выносить вверху html...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Vlasssov [?]
Если бы было больше времени - то все стили надо в таблицу стилей выносить вверху html...
Как то странно звучит.
Стили и так вверху Html, в его заголовке.
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
У меня получилось так.
 

running-frag

why me?
Сообщения
441
Репутация
60
Vlasssov [?]
Если бы было больше времени - то все стили надо в таблицу стилей выносить вверху html...
С понтом под зонтом? Читай первый пост.


Добавлено:
Сообщение автоматически объединено:

Код:
<td><div align="left">_FreeImage_MakeThumbnail@12</font></div></td>
Некорректный код. А именно или недописан тэг начальный, или лишний закрывающий </font>.
Плюс к этому не обязательно использывать <div> для выравнивания (по левому краю). Можно просто сделать класс в <style> для <td> с параметрами "text-align:left;".


Добавлено:
Сообщение автоматически объединено:

Код:
			table.main tr.body td.align_left
			{
				text-align: left; # куда центруем
            padding-left: 10px; #отступ слева
			}
Код:
<td class='align_left'>_FreeImage_GetImageType@4</td>
inline:
Код:
<td style='text-align: left;'>_FreeImage_GetImageType@4</td>
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Можешь в этом примере показать?

Код:
<!DOCTYPE html>
<html>
	<head>
		<title>Exported Functions List (FreeImage.dll, x86)</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<style type="text/css">
			table.main
			{
				border-spacing: 0px;
				border-collapse: collapse;
				white-space: nowrap;
				margin: 0;
			}
			table.main td
			{
				border-color: #c0c0c0;
				border-width: 1px;
				border-style: solid;
				padding: 2px 10px;
				text-align: center;
			}
			table.main tr.header
			{
				color: #000000;
				background-color: #e0e0e0;
				font-family: Arial;
				font-weight: bold;
				font-size: 10pt;
			}
			table.main tr.body
			{
				color: #000000;
				font-family: Courier;
				font-size: 10pt;
			}
		</style>
	</head>
	<body>
		<table class="main" align="center">
			<tr class="header">
				<td>Function Name</td>
				<td>Index</td>
				<td>Relative Address</td>
				<td>Size</td>
			</tr>
			<tr class="body">
				<td><div align="left">_FreeImage_GetImageType@4</div></td>
				<td>118</td>
				<td>0x00001180</td>
				<td>32</td>
			</tr>
			<tr class="body">
				<td><div align="left">_FreeImage_MultigridPoissonSolver@8</div></td>
				<td>163</td>
				<td>0x0004C540</td>
				<td>1104</td>
			</tr>
		</table>
		

	</body>
</html>
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
А зачем указывать style если уже для этого задан class:

Код:
Global $aFunc[4][4] = _
		[[3], _
		['MyFunc1', '1', '0x0000110E4', '0x771C110E4'], _
		['MyFunc2', '2', '0x000011120', '0x771C11120'], _
		['MyFunc3', '3', '0x0000111A8', '0x771C111A8']]

$sHtml = _ArrayToHtml($aFunc, "Name|Index|Address1|Address2", "Table from Array")

$sHtml_File = @DesktopDir & '\Array_Table.html'

$hFile = FileOpen($sHtml_File, 2)
FileWrite($hFile, $sHtml)
FileClose($hFile)

ShellExecute($sHtml_File)

Func _ArrayToHtml($aArray, $sTableHeaders, $sHtmlTitle = "")
	Local $sHeader, $sBody, $aTableHeaders
	
	$sHeader = "<html>" & @CRLF
	$sHeader &= "   <head>" & @CRLF
	$sHeader &= "       <title>" & $sHtmlTitle & "</title>" & @CRLF
	$sHeader &= '       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">' & @CRLF
	$sHeader &= '       <style type="text/css">' & @CRLF
	$sHeader &= '           table.main' & @CRLF
	$sHeader &= '           {' & @CRLF
	$sHeader &= '               border-spacing: 0px;' & @CRLF
	$sHeader &= '               border-collapse: collapse;' & @CRLF
	$sHeader &= '               white-space: nowrap;' & @CRLF
	$sHeader &= '               margin: 0;' & @CRLF
	$sHeader &= '               align: left;' & @CRLF
	$sHeader &= '           }' & @CRLF
	$sHeader &= '           table.main td' & @CRLF
	$sHeader &= '           {' & @CRLF
	$sHeader &= '               border-color: #c0c0c0;' & @CRLF ;Цвет рамки
	$sHeader &= '               border-width: 1px;' & @CRLF ;Объём рамки
	$sHeader &= '               border-style: solid;' & @CRLF
	$sHeader &= '               padding: 2px 10px;' & @CRLF
	$sHeader &= '               text-align: center;' & @CRLF
	$sHeader &= '           }' & @CRLF
	$sHeader &= '           table.main tr.header' & @CRLF
	$sHeader &= '           {' & @CRLF
	$sHeader &= '               color: #000000;' & @CRLF ;Цвет текста заголовка
	$sHeader &= '               background-color: #e0e0e0;' & @CRLF ;Цвет фона заголовка
	$sHeader &= '               font-family: Arial;' & @CRLF ;Шрифт заголовка
	$sHeader &= '               font-weight: bold;' & @CRLF ;Жирность заголовка :)
	$sHeader &= '               font-size: 10pt;' & @CRLF ;Размер заголовка
	$sHeader &= '           }' & @CRLF
	$sHeader &= '           table.main tr.body' & @CRLF
	$sHeader &= '           {' & @CRLF
	$sHeader &= '               color: #000000;' & @CRLF ;Цвет текста ячейки
	$sHeader &= '               font-family: Courier;' & @CRLF ;Шрифт текста ячейки
	$sHeader &= '               font-size: 10pt;' & @CRLF ;Размер текста ячейки
	$sHeader &= '           }' & @CRLF
	$sHeader &= '           table.main tr.body td.left' & @CRLF
	$sHeader &= '           {' & @CRLF
	$sHeader &= '               text-align: left;' & @CRLF ;Выравнивание текста (по левому краю)
	$sHeader &= '               padding-left: 10px;' & @CRLF ;Отступ текста слева
	$sHeader &= '           }' & @CRLF
	$sHeader &= '       </style>' & @CRLF
	$sHeader &= '   </head>' & @CRLF
	
	$sBody = "  <body>" & @CRLF
	$sBody &= "     <table class='main'>" & @CRLF
	$sBody &= "         <tr class='header'>" & @CRLF
	
	$aTableHeaders = StringSplit($sTableHeaders, "|")
	
	For $i = 1 To $aTableHeaders[0]
		$sBody &= "             <td>" & $aTableHeaders[$i] & "</td>" & @CRLF
	Next
	
	$sBody &= "         </tr>" & @CRLF
	
	For $i = 1 To $aArray[0][0]
		$sBody &= "         <tr class='body'>" & @CRLF
		
		For $j = 0 To UBound($aArray, 2) - 1
			If $j >= $aTableHeaders[0] Then ExitLoop
			
			If $j = 0 Then
				$sBody &= "             <td class='left'>" & $aArray[$i][$j] & "</td>" & @CRLF
			Else
				$sBody &= "             <td>" & $aArray[$i][$j] & "</td>" & @CRLF
			EndIf
		Next
		
		$sBody &= "         </tr>" & @CRLF
	Next
	
	$sBody &= "     </table>" & @CRLF
	$sBody &= " </body>" & @CRLF
	$sBody &= "</html>"
	
	Return $sHeader & $sBody
EndFunc
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
О! Работает. Спасибо еще раз. А чем плох <div>?
 

running-frag

why me?
Сообщения
441
Репутация
60
Немного переделанный, "в профиль".
Код:
<!DOCTYPE html>
<html>
    <head>
        <title>Exported Functions List (FreeImage.dll, x86)</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css">
            table.main
            {
                border-spacing: 0px;
                border-collapse: collapse;
                white-space: nowrap;
                font-family: Courier;
                font-size: 10pt;
            }
            table.main td
            {
                padding: 2px 10px;
                border: 1px solid #c0c0c0;
                text-align: center;
            }
            table.main tr.header                /* наследование + перезапись */
            {
                background-color: #e0e0e0;
                font-family: Arial;
                font-weight: bold;
            }
            table.main tr:hover
            {
                background-color: #336699;
                color: white;
            }
            table.main td._left
            {
                text-align: left;
            }
            div
            {
                width: 300px;
                height: 19px;
                vertical-align: middle;
                background: #e0e0e0;
                border: 1px solid #c0c0c0;
                margin: auto;
                font-family: Tahoma;
                color: #969696;
                text-align: center;
                font-size: 10pt;
            }
            div a                               /* декорация для ссылки */
            {
                text-decoration: none;
            }
            div a:hover
            {
                text-decoration: underline;
                color: red;
            }
        </style>
    </head>
    <body>
        <table class="main" align="center">
            <tr class="header">
                <td>Function Name</td>
                <td>Index</td>
                <td>Relative Address</td>
                <td>Size</td>
            </tr>
            <tr>
                <td class="_left">_FreeImage_GetImageType@4</td>
                <td>118</td>
                <td>0x00001180</td>
                <td>32</td>
            </tr>
            <tr>
                <td class="_left">_FreeImage_MultigridPoissonSolver@8</td>
                <td>163</td>
                <td>0x0004C540</td>
                <td>1104</td>
            </tr>
        </table>
        

        <div>Generated by <a href="#">DLL Helper</a></div>
    </body>
</html>

upd: подсветка ряда + поправка в стиле
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
running-frag

Спасибо.

Подсветка красиво смотрится, но для данной задачи это лишнее.

Тема решена.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Вот мой вариант. :smile:

Код:
Global $aFunc[7][4] = _
       [[3], _
        ['Function Name', 'Index', 'Relative Address', 'Size'], _
        ['_FreeImage_GetImageType@4', '118', '0x00001180', '32'], _
        ['_FreeImage_GetRedMask@4', '130', '0x000011A0', '32'], _
        ['_FreeImage_GetGreenMask@4', '114', '0x000011C0', '32'], _
        ['_FreeImage_GetBlueMask@4', '91', '0x000011E0', '32'], _
        ['_FreeImage_HasBackgroundColor@4', '144', '0x00001200', '32']]

#cs

	$a_Array		- двухмерный массив данных
	$s_Title		- заголовок страницы
	$i_Toggle		- заголовок таблицы ( $Array[1][x] only )
						1 - выводить 
						0 – не выводить

	$i_Width		- задаёт ширину таблицы в пикселях или процентах
						(по умолчанию 100 %)
						(ширина первой колонки 100%)

	$s_OutHtmlFile	- имя HTML файла на выходе (по умолчанию report.html)
	$s_OutCssFile  - имя CSS файла на выходе (по умолчанию стиль пишется в тэг HEAD)

#ce

;~ Example 1

_ReportHtmlTable($aFunc)

;~ Example 2
;~ _ReportHtmlTable($aFunc, 'Функции FreeImage', 0, '960 px', 'my_report.html', 'style.css')

#Region Function

Func _ReportHtmlTable($a_Array, $s_Title = '', $i_Toggle = 0, $i_Width = '', $s_OutHtmlFile = '', $s_OutCssFile = '')
	
	#Region CSS template
	
	Local $s_StyleTmp = 'body {color: #808080; font-family: Geneva, Arial, Helvetica, sans-serif; font-size: 12px;}' & @CR _
						&'table {' & @CR _
						& @TAB &'margin: 10px auto;' & @CR _ 
						& @TAB &'border-spacing: 0px;' & @CR _ 
						& @TAB &'border-collapse: collapse;' & @CR _ 
						& @TAB &'font-family: Arial;' & @CR _ 
						& @TAB &'font-size: 12px;' & @CR _ 
						&'}' & @CR _
						&'td {' & @CR _
						& @TAB &'padding: 4px 8px;' & @CR _
						& @TAB &'border: 1px solid #808080;' & @CR _
						& @TAB &'color: #808080;' & @CR _
						&'}' & @CR _
						&'th {padding: 4px;' & @CR _
						& @TAB &'border: 1px solid #808080;' & @CR _
						& @TAB &'font-width: bold;' & @CR _
						& @TAB &'background-color: #c0c0c0;' & @CR _
						& @TAB &'font-weight: bold;' & @CR _
						& @TAB &'font-size: 14px;' & @CR _
						& @TAB &'color: #ffffff;' & @CR _
						& @TAB &'white-space: nowrap;' & @CR _
						&'}' & @CR _
						&'.first {' & @CR _
						& @TAB &'width: 100%;' & @CR _
						& @TAB &'text-align:left;' & @CR _
						&'}' & @CR _
						&'.second {' & @CR _
						& @TAB &'text-align:center;' & @CR _
						&'}' & @CR _
						&'.row {' & @CR _
						& @TAB &'background-color: #f1f1f1;' & @CR _
						&'}'
					   
	#EndRegion CSS template

	#Region Html template

	Local $s_HtmlTmp = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">' _
					  &'<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">' _
					  &'<title>%title%</title>%style%</head><body>%body%</body></html>'
		
	#EndRegion Html template
	
	If UBound($a_Array, 0) <> 2 Then _
		Return SetError(1, 0, 0)
	
	If $i_Toggle >= 1 Then 
		$i_Toggle = 2
	ElseIf  $i_Toggle <= 0 Then
		$i_Toggle = 1
	EndIf
	
	If Not $i_Width Then $i_Width = 100 &"%"
	If Not $s_OutHtmlFile Then $s_OutHtmlFile = @ScriptDir &'\report.html'
		
	Local $s_Date = StringFormat('%02d-%02d-%04d / %02d:%02d:%02d', @MDAY, @MON, @YEAR, @HOUR, @MIN, @SEC)
	Local $i_Row = UBound($a_Array, 1)
	Local $i_Col = UBound($a_Array, 2)
	Local $s_Row
	Local $s_Cell
	
	; Создаём таблицу
	For $r = $i_Toggle To $i_Row -1
		For $c = 0 To $i_Col -1	
			Switch $i_Toggle
				
				Case 1
				
					$s_Cell &= '<th>'& $a_Array[$r][$c] &'</th>'

				Case 2
					
					If $c = 0 Then  
						$s_Class = 'first'
					Else
						$s_Class = 'second'
					EndIf

					If Not Mod($r, $i_Toggle) Then
						$s_Cell &= '<td class="'& $s_Class &'">'& $a_Array[$r][$c] &'</td>'
					Else
						$s_Class &= ' row'
						$s_Cell &= '<td class="'& $s_Class &'">'& $a_Array[$r][$c] &'</td>'
					EndIf
					
			EndSwitch
		Next

		$s_Row &= '<tr>'& $s_Cell &'</tr>'
		$s_Cell = ""
		$i_Toggle = 2
	Next
	
	; Пишем заголовок
	If $s_Title = '' Then
		$s_HtmlTmp = StringRegExpReplace($s_HtmlTmp, '%title%', 'Report created: ' & $s_Date)
	Else
		$s_HtmlTmp = StringRegExpReplace($s_HtmlTmp, '%title%', $s_Title)
	EndIf
	
	; Пишем стиль
	If $s_OutCssFile = '' Then
		$s_HtmlTmp = StringRegExpReplace($s_HtmlTmp, '%style%', '<style type="text/css">'& $s_StyleTmp &'</style>')		
	Else
		If Not FileExists(@ScriptDir &"\"& $s_OutCssFile) Then
			$s_HtmlTmp = StringRegExpReplace($s_HtmlTmp, '%style%', '<link rel="stylesheet" type="text/css" href="' & $s_OutCssFile & '">')
			$h_File = FileOpen($s_OutCssFile, 2)
			FileWrite($h_File, $s_StyleTmp)
			FileClose($h_File)
		Else
			$s_HtmlTmp = StringRegExpReplace($s_HtmlTmp, '%style%', '<link rel="stylesheet" type="text/css" href="' & $s_OutCssFile & '">')
		EndIf
	EndIf
	
	$s_HtmlTmp = StringRegExpReplace($s_HtmlTmp, '%body%', '<table border="0" width="'& $i_Width &'">'& $s_Row &'</table>')
	
	; Пишем файл
	$h_File = FileOpen($s_OutHtmlFile, 2)
	FileWrite($h_File, BinaryToString(StringToBinary($s_HtmlTmp, 4)))
	FileClose($h_File)
	
	Return SetError(0, 0, 1)
EndFunc ;==>_ReportHtmlTable

#EndRegion Function
 
Автор
Yashied

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Верх