This is a simple script that converts copied data from xls to DokuWiki's Table format. The weird UTF-8 code you see is a Russian explanation.
Just copy cells in Excel and paste it, then press 'convert'
<?php header("Content-type: text/html; charset=UTF-8"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" charset="utf-8"> function selText() { document.getElementById("txt1").select() } </script> <style type="text/css"> body { font: .8em "Trebuchet MS", Verdana, Arial, Sans-Serif; text-align: center; color: #333; background-color: #fff; margin-top: 0em; } h1 { font-size: 2em; padding: 0; margin: 0; } h5 { font-size: 1em; color: #09c; font-weight: bold; } form { background-color: #eee; border: 1px solid #ccc; margin-left: auto; margin-right: auto; padding: 1em; } a { color: #09c; text-decoration: none; font-weight: bold; } </style> </head> <? $s = $_POST['s']; $fromto = $_POST['fromto']; if ($fromto=="E2W"){ $s = str_replace("\r\n", " |\n| ", $s); $s = str_replace("\t", " | ", $s); $s = str_replace("| |", "| . |", $s); $s = str_replace("| |", "| . |", $s); $s = str_replace("| |", "| . |", $s); $s = str_replace("| |", "| . |", $s); $s = "| ".$s; $s = substr($s,0,-2); //get rid of last newline conversion }else{ $s = str_replace("^", "|", $s); $s = str_replace("|\r\n|", "\r\n", $s); $s = str_replace("\r\n ", "\r\n", $s); $s = str_replace(" |", "|", $s); $s = str_replace("| ", "|", $s); $s = str_replace("|", "\t", $s); $s = substr($s,1); // get rid of first | without /r/n } ?> <body onload="selText()"> <center> <h5>WIKI2EXCEL converter</h5> Copy and paste your Excel or Wiki table below and press [Convert!]<br/> Скопируйте и вставьте таблицу из Excel или Wiki и нажмите [Convert!] (конвертировать) <form method=POST action=""> <input type="radio" name="fromto" value="E2W" checked>Excel » Wiki<br> <input type="radio" name="fromto" value="W2E">Wiki » Excel<br> <INPUT TYPE=SUBMIT VALUE="Convert!"><br/> <textarea id="txt1" name="s" wrap="off" cols=80 rows=50 style="width:800; height:450"><? echo $s; ?></textarea> </form> <span style="font-size:80%"> <strong>Version 0.1 : </strong> <ul> <li>Headers from wiki2excel will not be converted properly</li> <li>Links with alternative text (like <i>[[link|alt.text]] ) will not convert properly</li> </ul> </span> </center> </body></html>
I have find this script helpful
I would like just to add this lines to put the first line like an header:
//explode the source by line with the use of regular expressions $arrayS = preg_split ("/[\n,]+/", $s); $nb_lines = count ($arrayS)-1; $s = $s . $nb_lignes; $s = ""; // we clean the text foreach ( $arrayS as $key => $lines ){ if ($key == 0) { //we put the header here on the first line $lines = str_replace("|", "^", $lines); }//end if $s = $s . $lines . "\n"; }//end for $s = substr($s,0,-2); //get rid of last newline conversion
This converts cell contents like “, ” (aka.<comma><space>
) into a\n
. Couldn't figure out why (code dyslexia)…
Finally, the code with English / French / Russian translations,
empty cells stay empty (no “ . ”), first line become header:
<?php header("Content-type: text/html; charset=UTF-8"); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" charset="utf-8"> function selText() { document.getElementById("txt1").select() } </script> <style type="text/css"> body { font: .8em "Trebuchet MS", Verdana, Arial, Sans-Serif; text-align: center; color: #333; background-color: #fff; margin-top: 0em; } h1 { font-size: 2em; padding: 0; margin: 0; } h5 { font-size: 1em; color: #09c; font-weight: bold; } form { background-color: #eee; border: 1px solid #ccc; margin-left: auto; margin-right: auto; padding: 1em; } a { color: #09c; text-decoration: none; font-weight: bold; } </style> </head> <?php $s = $_POST['s']; $fromto = $_POST['fromto']; if ($fromto=="E2W"){ $s = str_replace("\r\n", " |\n| ", $s); $s = str_replace("\t", " | ", $s); //$s = str_replace("| |", "| . |", $s); $s = "| ".$s; $s = substr($s,0,-2); //get rid of last newline conversion //explode the source by line $arrayS = preg_split ("/[\n,]+/", $s); $nb_lines = count ($arrayS)-1; $s = $s . $nb_lines; $s = ""; foreach ( $arrayS as $key => $lines ){ if ($key == 0) { $lines = str_replace("|", "^", $lines); }//end if $s = $s . $lines . "\n"; }//end for $s = substr($s,0,-2); //get rid of last newline conversion }else{ $s = str_replace("^", "|", $s); $s = str_replace("|\r\n|", "\r\n", $s); $s = str_replace("\r\n ", "\r\n", $s); $s = str_replace(" |", "|", $s); $s = str_replace("| ", "|", $s); $s = str_replace("|", "\t", $s); $s = substr($s,1); // get rid of first | without /r/n } ?> <body onload="selText()"> <center> <h5>WIKI2EXCEL converter</h5> Copy and paste your Excel or Wiki table below and press [Convert!]<br/> Copier et coller votre Table Excel ou Wiki dans le cadre ci-dessous et cliquez sur [Convert!]<br/> Скопируйте и вcтавьте таблицу из Excel или Wiki и нажмите [Convert!] (конвертировать) <form method=POST action=""> <input type="radio" name="fromto" value="E2W" checked>Excel - Wiki<br> <input type="radio" name="fromto" value="W2E">Wiki - Excel<br> <INPUT TYPE=SUBMIT VALUE="Convert!"><br/> <textarea id="txt1" name="s" wrap="off" cols=50 rows=50 style="width:400; height:450"><?=$s ?></textarea> </form> <span style="font-size:80%"> <strong>Version 0.1 : </strong> <ul> <li>Headers from wiki2excel will not be converted properly</li> <li>Links with alternative text (like <i>[[link|alt.text]]</i> ) will not convert properly</li> </ul> </span> </center> </body></html>
There is a spell mistake here…
$nb_lines = count ($arrayS)-1; $s = $s . $nb_lignes;
nb_lignes should be nb_lines.
Please forgive such a n00b question, but how does one install this helpful Trick? A small installation section would be extremely helpful.
My n00b answer:
use iframe….
create a PHP page somewhere into your website DokuWiki root and put the code inside.
Use iframe to include this PHP page into a wiki page. Look to this plugins if you hate HTML: iframe
You can not try to include directly the code in a wiki page either: something like:
<php> Put the code here//§ </php>
Because the page use little JavaScript tricks.
More simple. Save xls2wiki.php to your dokuwiki\www\ folder and click this link: http://localhost/xls2wiki.php. For net security set file attributes 600.
I integrated the code from the beginning into a simple plugin. I also added a few helping functions for cleaning up markup resulting from pandoc conversion of docx-files into dokuwiki markup.
See: https://github.com/practical-solutions/dokuwiki-xlsconv
I've installed iframe, but I'm kind of stuck how can I add the PHP file on the page I want to embed an excel spreadsheet. Can anyone help? Thanks in advance.
Resp.: I've found a way creating a wikipage and adding \\servername\drive\dokuwiki\XLStoWIKI.php to it. Is this the best way? Now I have the page but after pasting the spreadsheet content and hitting convert nothing seems to happen. Please help.
If you like this you probably love this HTML converter as well: http://diberri.dyndns.org/wikipedia/html2wiki/index.html←-Bad link!
Does not work for me, keep seeing “ <? echo $s; ?> ” in the input field, and convert does not do a thing, neither on IE nor on Firefox.
Perhaps I'm doing something wrong??
-Theo
@theo: It's a “new” setting in current php versions which disables the php short tags, so you either have to replace the:
<?
with:
<?php
in the php script, or in your php.ini set the following parameter:
short_open_tag = on
-Steven
Changing the ini files worked for me - you also need to restart your Apache server before it will work. — gymnophoria 2013/01/10 16:58