Translations of this page?:
Learn about DokuWiki
Advanced Use
Corporate Use
Our Community
Follow us on Facebook, Twitter and other social networks.
Learn about DokuWiki
Advanced Use
Corporate Use
Our Community
Follow us on Facebook, Twitter and other social networks.
I wrote a small Java-Programm, to convert Spreadsheet-Data into DokuWiki's table syntax. Feel free to leave a comment on my discussion-page.
Feel free to use and distribute - but of course I no warranty - if your PC breaks don't sue me.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.regex.Pattern; /** * Converts CSV input (tab separated) into DokuWiki's table syntax * * Tip: mark your data in Spreadsheet-Program and copy-paste it into the console * * @author slartidan * */ public class TableConvert { private static final String PATTERN_START_QUOTATION = "(^|.*\t)\"((?:\"\"|[^\"])*)"; private static final String PATTERN_END_QUOTATION = "(^|.*\t)((?:\"\"|[^\"])*)\"(\t.*|$)"; private static final int MODE_STANDARD = 0; private static final int MODE_IN_QUOTATION = 1; public static void main(String[] args) throws IOException { System.out.println("CSV2DokuWiki - type your tab separated CSV here:"); BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); Pattern startQuotation = Pattern.compile(PATTERN_START_QUOTATION); Pattern endOuotation = Pattern.compile(PATTERN_END_QUOTATION); int mode = MODE_STANDARD; String line; StringBuffer output = new StringBuffer(); while ((line = reader.readLine()) != null) { if ("".equals(line)) break; // empty line signalizes end of input if (mode == MODE_IN_QUOTATION) { // closing Quotation? if (endOuotation.matcher(line).matches()) { mode = MODE_STANDARD; line = line.replaceAll(PATTERN_END_QUOTATION, "$1$2$3"); } } else { // lines (not in quotation) start with " | " line = "\t"+line; } // starting Quotation? if (startQuotation.matcher(line).matches()) { mode = MODE_IN_QUOTATION; line = line.replaceAll(PATTERN_START_QUOTATION, "$1$2"); } // remove unnessesary quotation marks String old = new String(); while (!old.equals(line)) { old = line; line = line.replaceAll("(^|\t)\"((?:\"\"|[^\"])*)\"(\t|$)", "$1$2$3"); } // normalize escaped quotation marks line = line.replaceAll("\"\"", "\""); // pipes instead of tabs line = line.replaceAll("\\t", " | "); // breaks in Quotations become \\ if (mode == MODE_IN_QUOTATION) { line += "\\\\ "; } else { line += " |\n"; } // save line line = line.replaceAll("^ ", ""); output.append(line); } // print output System.out.println(output); } }
To paste the copied table from your spreadsheet program into the Windows Prompt-Window (cmd.exe
) and to mark and copy it from there use the system menu (ALT-SPACE → EDIT).
All binaries were compiled with Java 1.6. You should have Java 1.6 JRE (runtime environment) or higher installed on your system.