diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDataMergingReportingPlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDataMergingReportingPlugin.java
index e79e9e4289d0e6148c418a014925cae9cd66e392..f14e7a47104dfb650f95574397a9ac5222abe248 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDataMergingReportingPlugin.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/AbstractDataMergingReportingPlugin.java
@@ -37,6 +37,7 @@ import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.SimpleTableMode
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.StringTableCell;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription;
+import ch.systemsx.cisd.openbis.generic.shared.util.TableCellUtil;
 
 /**
  * Common super class of all tsv-based data merging reporting plugins.
@@ -113,7 +114,7 @@ public abstract class AbstractDataMergingReportingPlugin extends AbstractDatasto
         }
         for (String token : dataTokens)
         {
-            row.add(new StringTableCell(token));
+            row.add(TableCellUtil.createTableCell(token));
         }
         builder.addRow(row);
     }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/TSVViewReportingPlugin.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/TSVViewReportingPlugin.java
index 367686f8226d986b1b3ab8d3b6b6251b282d62f3..5da915daf8e054b696dbdbee5bf4521a3a5ebcef 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/TSVViewReportingPlugin.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/TSVViewReportingPlugin.java
@@ -27,9 +27,9 @@ import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.DatasetFileLine
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IReportingPluginTask;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.SimpleTableModelBuilder;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.StringTableCell;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription;
+import ch.systemsx.cisd.openbis.generic.shared.util.TableCellUtil;
 
 /**
  * Shows the data as a table if one 'main data set' file exists and is a 'tsv' file.
@@ -67,7 +67,7 @@ public class TSVViewReportingPlugin extends AbstractDataMergingReportingPlugin i
                 List<ISerializableComparable> row = new ArrayList<ISerializableComparable>();
                 for (String token : line)
                 {
-                    row.add(new StringTableCell(token));
+                    row.add(TableCellUtil.createTableCell(token));
                 }
                 tableBuilder.addRow(row);
             }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/tasks/IterativeTableModelBuilder.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/tasks/IterativeTableModelBuilder.java
index f4ac89fdf36a23f71e1a274d2bbe4576012d5cb7..e7f63d2b7123263d8b2d75e76999180d591681ae 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/tasks/IterativeTableModelBuilder.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/tasks/IterativeTableModelBuilder.java
@@ -30,10 +30,10 @@ import org.apache.log4j.Logger;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.StringTableCell;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelColumnHeader;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModelRow;
+import ch.systemsx.cisd.openbis.generic.shared.util.TableCellUtil;
 
 /**
  * A table model builder that can take new columns and rows iteratively.
@@ -140,7 +140,7 @@ public class IterativeTableModelBuilder
             for (TableModelColumnHeader header : headers)
             {
                 final String valueOrNull = columnMap.get(header.getTitle()).get(rowId);
-                rowValues.add(new StringTableCell((valueOrNull == null) ? "" : valueOrNull));
+                rowValues.add(TableCellUtil.createTableCell((valueOrNull == null) ? "" : valueOrNull));
             }
             rows.add(new TableModelRow(rowValues));
         }
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/MergedColumnDataReportingPluginTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/MergedColumnDataReportingPluginTest.java
index 75d4d3736229683547dab43a6c37fd53bf5f7fa7..51362bcdb1763621ce70faedd882761ef26b1e79 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/MergedColumnDataReportingPluginTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/MergedColumnDataReportingPluginTest.java
@@ -16,17 +16,21 @@
 
 package ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard;
 
-import static org.testng.AssertJUnit.assertEquals;
-
 import java.io.File;
 import java.util.Arrays;
+import java.util.List;
 import java.util.Properties;
 
 import org.apache.commons.lang.StringUtils;
+import org.testng.AssertJUnit;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.common.filesystem.FileUtilities;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.tasks.IReportingPluginTask;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DoubleTableCell;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IntegerTableCell;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.StringTableCell;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel;
 import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription;
 
@@ -35,7 +39,7 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.DatasetDescription;
  * 
  * @author Bernd Rinn
  */
-public class MergedColumnDataReportingPluginTest
+public class MergedColumnDataReportingPluginTest extends AssertJUnit
 {
 
     private final static File dir =
@@ -75,13 +79,20 @@ public class MergedColumnDataReportingPluginTest
         assertEquals("val3", model.getHeader().get(3).getTitle());
         assertEquals(4, model.getRows().size());
         assertEquals("one\t1\t\t0", StringUtils.join(model.getRows().get(0).getValues(), '\t'));
-        assertEquals("two\t2.2\t17\t1.9e+5", StringUtils.join(model.getRows().get(1).getValues(),
-                '\t'));
-        assertEquals("three\tCC\t42\t-8.2", StringUtils.join(model.getRows().get(2).getValues(),
-                '\t'));
+        assertRow("two\t2.2\t17\t190000.0", model, 1);
+        assertRow("three\tCC\t42\t-8.2", model, 2);
         assertEquals("four\t\t105\t", StringUtils.join(model.getRows().get(3).getValues(), '\t'));
     }
 
+    private void assertRow(String expectedRow, final TableModel model, int index)
+    {
+        List<ISerializableComparable> values = model.getRows().get(index).getValues();
+        assertEquals(expectedRow, StringUtils.join(values, '\t'));
+        assertTrue(values.get(0).getClass().getName(), values.get(0) instanceof StringTableCell);
+        assertTrue(values.get(2).getClass().getName(), values.get(2) instanceof IntegerTableCell);
+        assertTrue(values.get(3).getClass().getName(), values.get(3) instanceof DoubleTableCell);
+    }
+    
     private DatasetDescription createDatasetDescription(String location)
     {
         return new DatasetDescription("", location, "", "", "", "", null, null);