Index: TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/handlers/scripts/CreateMacro.java
===================================================================
--- TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/handlers/scripts/CreateMacro.java	(revision 3557)
+++ TXM/trunk/org.txm.rcp/src/main/java/org/txm/rcp/handlers/scripts/CreateMacro.java	(revision 3558)
@@ -172,13 +172,13 @@
 					writer.println("//@Field @Option(name=\"query\", usage=\"an example query\", widget=\"Query\", required=true, def='[pos=\"V.*\"]')"); //$NON-NLS-1$
 					writer.println("//def query"); //$NON-NLS-1$
 					writer.println(""); //$NON-NLS-1$
-					writer.println("//@Field @Option(name=\"inputFile\", usage=\"an example file\", widget=\"FileOpen\", required=true, def=\"C:/Temp/foo.txt\")"); //$NON-NLS-1$
+					writer.println("//@Field @Option(name=\"inputFile\", usage=\"an example file\", widget=\"FileOpen\", required=true, def=\"\")"); //$NON-NLS-1$
 					writer.println("//def inputFile"); //$NON-NLS-1$
 					writer.println(""); //$NON-NLS-1$
-					writer.println("//@Field @Option(name=\"outputFile\", usage=\"an example file\", widget=\"FileSave\", required=true, def=\"C:/Temp/foo.txt\")"); //$NON-NLS-1$
+					writer.println("//@Field @Option(name=\"outputFile\", usage=\"an example file\", widget=\"FileSave\", required=true, def=\"\")"); //$NON-NLS-1$
 					writer.println("//def outputFile"); //$NON-NLS-1$
 					writer.println(""); //$NON-NLS-1$
-					writer.println("//@Field @Option(name=\"folder\", usage=\"an example folder\", widget=\"Folder\", required=false, def=\"C:/Temp\")"); //$NON-NLS-1$
+					writer.println("//@Field @Option(name=\"folder\", usage=\"an example folder\", widget=\"Folder\", required=false, def=\"\")"); //$NON-NLS-1$
 					writer.println("//def folder"); //$NON-NLS-1$
 					writer.println(""); //$NON-NLS-1$
 					writer.println("//@Field @Option(name=\"date\", usage=\"an example date\", widget=\"Date\", required=false, def=\"1984-09-01\")"); //$NON-NLS-1$
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/txt/CharListDirectoryMacro.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/txt/CharListDirectoryMacro.groovy	(revision 3557)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/txt/CharListDirectoryMacro.groovy	(revision 3558)
@@ -10,7 +10,7 @@
 // Declare each parameter here
 // (available widget types: Query, File, Folder, String, Text, Boolean, Integer, Float and Date)
 
-@Field @Option(name="inputFile",usage="The file to read", widget="File", required=true, def="C:/Temp/foo.txt")
+@Field @Option(name="inputFile",usage="The file to read", widget="File", required=true, def="")
 def inputFile
 
 @Field @Option(name="inputDir",usage="The file to read", widget="Folder", required=false, def="")
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/export/ExportCAInfosMacro.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/export/ExportCAInfosMacro.groovy	(revision 0)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/export/ExportCAInfosMacro.groovy	(revision 3558)
@@ -0,0 +1,53 @@
+// Copyright © 2022 ENS LYON
+// Licensed under the terms of the GNU General Public License version 3 (http://www.gnu.org/licenses/gpl-3.0.html)
+// @author mdecorde
+
+// STANDARD DECLARATIONS
+package org.txm.macro.export
+
+import org.kohsuke.args4j.*
+import groovy.transform.Field
+import org.txm.rcp.swt.widget.parameters.*
+import org.txm.ca.core.functions.CA
+import org.txm.libs.office.WriteODS
+
+@Field @Option(name="outputODSFile", usage="ODS file with 2 sheets", widget="FileSave", required=true, def="")
+def outputODSFile
+
+// Open the parameters input dialog box
+if (!ParametersDialog.open(this)) return
+
+// END OF PARAMETERS
+
+if (!(corpusViewSelection instanceof CA)) {
+	println "** $scriptName: please select a CA in the Corpus view."
+	return 0
+}
+
+CA ca = corpusViewSelection
+outputODSFile = outputODSFile.getAbsoluteFile()
+println "Exporting CA '$ca' to '$outputODSFile'..."
+
+WriteODS writer = new WriteODS(outputODSFile)
+def header = ["label", "Q12", "Q13", "Q23", "Masse", "Dist", "Cont1", "Cos²1", "Cont2", "Cos²2", "Cont3", "Cos²3", "c1", "c2", "c3"]
+
+println "Writing the rows infos table..."
+
+writer.table.setTableName("rows")
+i = 0
+writer.writeLine(header, i++)
+for (def line : ca.getRowInfos()) {
+line = [line[0],line[2], line[3], line[4], line[5], line[6], line[8], line[9], line[11], line[12], line[14], line[15], line[17], line[18], line[19]] 
+	writer.writeLine(line, i++)
+}
+
+println "Writing the column infos table..."
+table = writer.newTable("cols")
+i = 0
+writer.writeLine(header, i++)
+for (def line : ca.getColInfos()) {
+	line = [line[0],line[2], line[3], line[4], line[5], line[6], line[8], line[9], line[11], line[12], line[14], line[15], line[17], line[18], line[19]] 
+	writer.writeLine(line, i++)
+}
+
+writer.save()
\ No newline at end of file
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/ZoneConcordancesMacro.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/ZoneConcordancesMacro.groovy	(revision 3557)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/ZoneConcordancesMacro.groovy	(revision 3558)
@@ -24,7 +24,7 @@
 @Field @Option(name="property", usage="an example query", widget="String", required=true, def='word')
 def property
 
-@Field @Option(name="outputFile", usage="an example file", widget="FileSave", required=true, def="C:/Temp/foo.txt")
+@Field @Option(name="outputFile", usage="an example file", widget="FileSave", required=true, def="")
 def outputFile
 
 // Open the parameters input dialog box
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/ApplyXQueryMacro.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/ApplyXQueryMacro.groovy	(revision 3557)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/ApplyXQueryMacro.groovy	(revision 3558)
@@ -26,7 +26,7 @@
 	return false;
 }
 
-@Field @Option(name="xqFile", usage="a Xquery file", widget="FileOpen", required=true, def="C:/Temp/foo.xq")
+@Field @Option(name="xqFile", usage="a Xquery file", widget="FileOpen", required=true, def="")
 def xqFile
 @Field @Option(name="outFile", usage="optional output file", widget="File", required=false, def="")
 def outFile
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/txt/CharListDirectoryMacro.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/txt/CharListDirectoryMacro.groovy	(revision 3557)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/txt/CharListDirectoryMacro.groovy	(revision 3558)
@@ -10,7 +10,7 @@
 // Declare each parameter here
 // (available widget types: Query, File, Folder, String, Text, Boolean, Integer, Float and Date)
 
-@Field @Option(name="inputFile", usage="The file to read", widget="File", required=true, def="C:/Temp/foo.txt")
+@Field @Option(name="inputFile", usage="The file to read", widget="File", required=true, def="")
 def inputFile
 
 @Field @Option(name="inputDir", usage="The file to read", widget="Folder", required=false, def="")
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/file/SetFileRightsMacro.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/file/SetFileRightsMacro.groovy	(revision 3557)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/file/SetFileRightsMacro.groovy	(revision 3558)
@@ -7,7 +7,7 @@
 
 // BEGINNING OF PARAMETERS
 
-@Field @Option(name="file", usage="an example file", widget="FileOpen", required=true, def="C:/Temp/foo.txt")
+@Field @Option(name="file", usage="an example file", widget="FileOpen", required=true, def="")
 def file
 
 @Field @Option(name="read_right", usage="read", widget="Boolean", required=true, def="true")
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/cqp/ListSubcorpusMacro.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/cqp/ListSubcorpusMacro.groovy	(revision 3557)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/cqp/ListSubcorpusMacro.groovy	(revision 3558)
@@ -22,7 +22,7 @@
 
 @Field @Option(name="subcorpusname", usage="an example file", widget="String", required=true, def="A")
 def subcorpusname
-@Field @Option(name="inputFile", usage="an example file", widget="FileOpen", required=true, def="C:/Temp/foo.txt")
+@Field @Option(name="inputFile", usage="an example file", widget="FileOpen", required=true, def="")
 def inputFile
 @Field @Option(name="replace", usage="an example file", widget="Boolean", required=true, def="true")
 def replace
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/xml/ApplyXQueryMacro.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/xml/ApplyXQueryMacro.groovy	(revision 3557)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/xml/ApplyXQueryMacro.groovy	(revision 3558)
@@ -26,7 +26,7 @@
 	return false;
 }
 
-@Field @Option(name="xqFile", usage="a Xquery file", widget="FileOpen", required=true, def="C:/Temp/foo.xq")
+@Field @Option(name="xqFile", usage="a Xquery file", widget="FileOpen", required=true, def="")
 def xqFile
 @Field @Option(name="outFile", usage="optional output file", widget="File", required=false, def="")
 def outFile
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/xml/XSL2CQPMacro.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/xml/XSL2CQPMacro.groovy	(revision 3557)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/prototypes/xml/XSL2CQPMacro.groovy	(revision 3558)
@@ -15,7 +15,7 @@
 	return false;
 }
 
-@Field @Option(name="xslFile", usage="an example file", widget="FileOpen", required=true, def="C:/Temp/foo.txt")
+@Field @Option(name="xslFile", usage="an example file", widget="FileOpen", required=true, def="")
 def xslFile
 @Field @Option(name="debug", usage="an example file", widget="Boolean", required=true, def="false")
 def debug
Index: TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/stats/CAFilter.groovy
===================================================================
--- TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/stats/CAFilter.groovy	(revision 3557)
+++ TXM/trunk/org.txm.groovy.core/src/groovy/org/txm/macro/stats/CAFilter.groovy	(revision 3558)
@@ -44,10 +44,10 @@
 //@Field @Option(name="query", usage="an example query", widget="Query", required=true, def='[pos="V.*"]')
 //def query
 
-//@Field @Option(name="file", usage="an example file", widget="File", required=true, def="C:/Temp/foo.txt")
+//@Field @Option(name="file", usage="an example file", widget="File", required=true, def="")
 //def file
 
-//@Field @Option(name="folder", usage="an example folder", widget="Folder", required=false, def="C:/Temp")
+//@Field @Option(name="folder", usage="an example folder", widget="Folder", required=false, def="")
 //def folder
 
 //@Field @Option(name="date", usage="an example date", widget="Date", required=false, def="1984-09-01")
