diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
index f9108ff..7fc026a 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/painter/cell/AbstractTextPainter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012, 2015 Original authors and others.
+ * Copyright (c) 2012, 2016 Original authors and others.
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
  * which accompanies this distribution, and is available at
@@ -49,6 +49,10 @@
 
     public static final String LINE_SEPARATOR = System.getProperty("line.separator"); //$NON-NLS-1$
 
+    /**
+     * @since 1.5
+     */
+    protected boolean wordWrapping = false;
     protected boolean wrapText;
     protected final boolean paintBg;
     protected boolean paintFg = true;
@@ -334,7 +338,31 @@
 
         // take the whole width of the text
         int textLength = getLengthFromCache(gc, text);
-        if (this.calculateByTextLength && this.wrapText) {
+
+        if (this.wordWrapping) {
+            if (availableLength < textLength) {
+                String[] lines = text.split(NEW_LINE_REGEX);
+                for (String textLine : lines) {
+                    if (output.length() > 0) {
+                        output.append(LINE_SEPARATOR);
+                    }
+
+                    StringBuilder line = new StringBuilder();
+                    for (char c : textLine.toCharArray()) {
+                        line.append(c);
+                        int length = getLengthFromCache(gc, line.toString());
+                        if (length >= availableLength) {
+                            output.append(line.substring(0, line.length() - 1)).append(LINE_SEPARATOR);
+                            line = new StringBuilder();
+                            line.append(c);
+                        }
+                    }
+                    output.append(line);
+                }
+            } else {
+                output.append(text);
+            }
+        } else if (this.calculateByTextLength && this.wrapText) {
             if (availableLength < textLength) {
                 // calculate length by finding the longest word in text
                 textLength = (availableLength - (2 * this.spacing));
@@ -397,7 +425,7 @@
     }
 
     /**
-     * This method gets only called if word wrapping is enabled. Concatenates
+     * This method gets only called if text wrapping is enabled. Concatenates
      * the two given words by taking the availableSpace into account. If
      * concatenating those two words with a space as delimiter does fit into the
      * available space the return value is exactly this. Else instead of a space
@@ -716,4 +744,54 @@
         }
     }
 
+    /**
+     * Return whether word wrapping is enabled or not.
+     * <p>
+     * Word wrapping is the wrapping behavior similar to spreadsheet
+     * applications where words are wrapped if there is not enough space. Text
+     * wrapping on the other hand only wraps whole words.
+     * </p>
+     * <p>
+     * Enabling this feature could result in slow rendering performance. It is
+     * therefore disabled by default.
+     * </p>
+     * <p>
+     * <b>Note:</b> If word wrapping is enabled, features like automatic size
+     * calculation by text length and text wrapping are ignored.
+     * </p>
+     *
+     * @return <code>true</code> if word wrapping is enabled, <code>false</code>
+     *         if not.
+     *
+     * @since 1.5
+     */
+    public boolean isWordWrapping() {
+        return this.wordWrapping;
+    }
+
+    /**
+     * Configure whether word wrapping should be enabled or not.
+     * <p>
+     * Word wrapping is the wrapping behavior similar to spreadsheet
+     * applications where words are wrapped if there is not enough space. Text
+     * wrapping on the other hand only wraps whole words.
+     * </p>
+     * <p>
+     * Enabling this feature could result in slow rendering performance. It is
+     * therefore disabled by default.
+     * </p>
+     * <p>
+     * <b>Note:</b> If word wrapping is enabled, features like automatic size
+     * calculation by text length and text wrapping are ignored.
+     * </p>
+     *
+     * @param wordWrapping
+     *            <code>true</code> to enable word wrapping, <code>false</code>
+     *            to disable it.
+     *
+     * @since 1.5
+     */
+    public void setWordWrapping(boolean wordWrapping) {
+        this.wordWrapping = wordWrapping;
+    }
 }
diff --git a/org.eclipse.nebula.widgets.nattable.examples.e4.product/org.eclipse.nebula.widgets.nattable.examples.e4.product b/org.eclipse.nebula.widgets.nattable.examples.e4.product/org.eclipse.nebula.widgets.nattable.examples.e4.product
index 552796a..31b6d73 100644
--- a/org.eclipse.nebula.widgets.nattable.examples.e4.product/org.eclipse.nebula.widgets.nattable.examples.e4.product
+++ b/org.eclipse.nebula.widgets.nattable.examples.e4.product/org.eclipse.nebula.widgets.nattable.examples.e4.product
@@ -31,7 +31,7 @@
       <feature id="org.eclipse.emf.ecore"/>
       <feature id="org.eclipse.emf.common"/>
       <feature id="org.eclipse.nebula.widgets.nattable.core.feature" version="1.5.0.qualifier"/>
-      <feature id="org.eclipse.nebula.widgets.nattable.extension.e4.feature" version="1.0.0.qualifier"/>
+      <feature id="org.eclipse.nebula.widgets.nattable.extension.e4.feature" version="1.1.0.qualifier"/>
       <feature id="org.eclipse.nebula.widgets.nattable.extension.glazedlists.feature" version="1.4.0.qualifier"/>
       <feature id="org.eclipse.nebula.widgets.nattable.examples.e4.feature" version="1.5.0.qualifier"/>
       <feature id="org.eclipse.nebula.widgets.nattable.extension.nebula.feature" version="1.1.0.qualifier"/>
diff --git a/org.eclipse.nebula.widgets.nattable.extension.e4.feature/feature.xml b/org.eclipse.nebula.widgets.nattable.extension.e4.feature/feature.xml
index 61340c6..4a185d6 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.e4.feature/feature.xml
+++ b/org.eclipse.nebula.widgets.nattable.extension.e4.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.nebula.widgets.nattable.extension.e4.feature"
       label="NatTable Eclipse 4 Extension Feature"
-      version="1.0.0.qualifier">
+      version="1.1.0.qualifier">
 
    <description url="http://www.example.com/description">
       NatTable Eclipse 4 Extension
diff --git a/org.eclipse.nebula.widgets.nattable.extension.e4.source.feature/feature.xml b/org.eclipse.nebula.widgets.nattable.extension.e4.source.feature/feature.xml
index d9283d3..4a00287 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.e4.source.feature/feature.xml
+++ b/org.eclipse.nebula.widgets.nattable.extension.e4.source.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.nebula.widgets.nattable.extension.e4.source.feature"
       label="NatTable Eclipse 4 Extension Source Feature"
-      version="1.0.0.qualifier">
+      version="1.1.0.qualifier">
 
    <description url="http://www.example.com/description">
       NatTable Eclipse 4 Extension Source
diff --git a/org.eclipse.nebula.widgets.nattable.extension.e4/META-INF/MANIFEST.MF b/org.eclipse.nebula.widgets.nattable.extension.e4/META-INF/MANIFEST.MF
index f9947ac..a071b31 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.e4/META-INF/MANIFEST.MF
+++ b/org.eclipse.nebula.widgets.nattable.extension.e4/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: NatTable extension for Eclipse 4
 Bundle-SymbolicName: org.eclipse.nebula.widgets.nattable.extension.e4;singleton:=true
-Bundle-Version: 1.0.0.qualifier
+Bundle-Version: 1.1.0.qualifier
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Require-Bundle: org.eclipse.swt;bundle-version="3.103.0",
  org.eclipse.e4.ui.css.core;bundle-version="0.11.0",
@@ -38,6 +38,6 @@
  org.eclipse.nebula.widgets.nattable.ui.util;version="[1.4.0,2.0.0)",
  org.eclipse.nebula.widgets.nattable.util;version="[1.4.0,2.0.0)"
 Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.nebula.widgets.nattable.extension.e4.css;version="1.0.0",
- org.eclipse.nebula.widgets.nattable.extension.e4.painterfactory;version="1.0.0",
+Export-Package: org.eclipse.nebula.widgets.nattable.extension.e4.css;version="1.1.0",
+ org.eclipse.nebula.widgets.nattable.extension.e4.painterfactory;version="1.1.0",
  org.eclipse.nebula.widgets.nattable.extension.e4.selection;version="1.0.0"
diff --git a/org.eclipse.nebula.widgets.nattable.extension.e4/plugin.xml b/org.eclipse.nebula.widgets.nattable.extension.e4/plugin.xml
index 1f5188b..19d4d58 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.e4/plugin.xml
+++ b/org.eclipse.nebula.widgets.nattable.extension.e4/plugin.xml
@@ -97,6 +97,9 @@
                name="text-decoration">
          </property-name>
          <property-name
+               name="word-wrap">
+         </property-name>
+         <property-name
                name="text-wrap">
          </property-name>
          <property-name
@@ -251,6 +254,9 @@
                name="text-decoration">
          </property-name>
          <property-name
+               name="word-wrap">
+         </property-name>
+         <property-name
                name="text-wrap">
          </property-name>
          <property-name
diff --git a/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/css/NatTableCSSConstants.java b/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/css/NatTableCSSConstants.java
index 92e4179..24159ba 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/css/NatTableCSSConstants.java
+++ b/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/css/NatTableCSSConstants.java
@@ -185,6 +185,16 @@
      */
     String RENDER_GRID_LINES = "render-grid-lines";
     /**
+     * CSS property to specify whether words should automatically or not.
+     * Default is <code>false</code>.
+     * <p>
+     * Available values: <code>true, false</code>
+     * </p>
+     *
+     * @since 1.1
+     */
+    String WORD_WRAP = "word-wrap";
+    /**
      * CSS property to specify whether text should automatically wrapped between
      * words or not. Default is <code>false</code>.
      * <p>
diff --git a/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/css/NatTableCSSHandler.java b/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/css/NatTableCSSHandler.java
index fbd0258..162a33d 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/css/NatTableCSSHandler.java
+++ b/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/css/NatTableCSSHandler.java
@@ -536,6 +536,11 @@
                         newColor,
                         displayMode,
                         label);
+            } else if (NatTableCSSConstants.WORD_WRAP.equalsIgnoreCase(property)
+                    && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
+                NatTableCSSHelper
+                        .getPainterProperties(context, displayMode)
+                        .put(NatTableCSSConstants.WORD_WRAP, NatTableCSSHelper.getBoolean(value, false));
             } else if (NatTableCSSConstants.TEXT_WRAP.equalsIgnoreCase(property)
                     && (value.getCssValueType() == CSSValue.CSS_PRIMITIVE_VALUE)) {
                 NatTableCSSHelper
@@ -1190,6 +1195,24 @@
                         style.getAttributeValue(CellStyleAttributes.FOREGROUND_COLOR),
                         engine,
                         null);
+            } else if (NatTableCSSConstants.WORD_WRAP.equalsIgnoreCase(property)) {
+                Boolean wrap = Boolean.FALSE;
+
+                ICellPainter painter = natTable.getConfigRegistry().getConfigAttribute(
+                        CellConfigAttributes.CELL_PAINTER,
+                        displayMode,
+                        label);
+                if (painter != null) {
+                    while (painter instanceof CellPainterWrapper) {
+                        painter = ((CellPainterWrapper) painter).getWrappedPainter();
+                    }
+                }
+
+                if (painter instanceof AbstractTextPainter) {
+                    wrap = ((AbstractTextPainter) painter).isWordWrapping();
+                }
+
+                return wrap.toString();
             } else if (NatTableCSSConstants.TEXT_WRAP.equalsIgnoreCase(property)) {
                 Boolean wrap = Boolean.FALSE;
 
diff --git a/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/painterfactory/CellPainterFactory.java b/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/painterfactory/CellPainterFactory.java
index 16b5a36..44c334c 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/painterfactory/CellPainterFactory.java
+++ b/org.eclipse.nebula.widgets.nattable.extension.e4/src/org/eclipse/nebula/widgets/nattable/extension/e4/painterfactory/CellPainterFactory.java
@@ -315,7 +315,7 @@
      */
     public ICellPainter getCellPainter(List<String> painterValues, Map<String, Object> painterProperties) {
         String backgroundKey = null;
-        List<String> decoratorKeys = new ArrayList<String>();
+        List<String> decoratorKeys = new ArrayList<>();
         String contentKey = null;
 
         if (isBackgroundPainterKey(painterValues.get(0))) {
@@ -493,6 +493,12 @@
      *            The painter properties to apply.
      */
     public void initTextPainter(AbstractTextPainter painter, Map<String, Object> painterProperties) {
+        boolean wrapWord = false;
+        if (painterProperties.containsKey(NatTableCSSConstants.WORD_WRAP)) {
+            wrapWord = (Boolean) painterProperties.get(NatTableCSSConstants.WORD_WRAP);
+        }
+        painter.setWordWrapping(wrapWord);
+
         boolean wrapText = false;
         if (painterProperties.containsKey(NatTableCSSConstants.TEXT_WRAP)) {
             wrapText = (Boolean) painterProperties.get(NatTableCSSConstants.TEXT_WRAP);
diff --git a/org.eclipse.nebula.widgets.nattable.extension.poi/src/org/eclipse/nebula/widgets/nattable/extension/poi/PoiExcelExporter.java b/org.eclipse.nebula.widgets.nattable.extension.poi/src/org/eclipse/nebula/widgets/nattable/extension/poi/PoiExcelExporter.java
index 823de5b..10fe2fa 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.poi/src/org/eclipse/nebula/widgets/nattable/extension/poi/PoiExcelExporter.java
+++ b/org.eclipse.nebula.widgets.nattable.extension.poi/src/org/eclipse/nebula/widgets/nattable/extension/poi/PoiExcelExporter.java
@@ -273,7 +273,8 @@
 
     private boolean wrapText(ICellPainter cellPainter) {
         if (cellPainter instanceof AbstractTextPainter) {
-            return ((AbstractTextPainter) cellPainter).isWrapText();
+            return ((AbstractTextPainter) cellPainter).isWordWrapping()
+                    || ((AbstractTextPainter) cellPainter).isWrapText();
         } else if (cellPainter instanceof CellPainterWrapper) {
             return wrapText(((CellPainterWrapper) cellPainter).getWrappedPainter());
         } else if (cellPainter instanceof CellPainterDecorator) {
diff --git a/org.eclipse.nebula.widgets.nattable.updatesite/category.xml b/org.eclipse.nebula.widgets.nattable.updatesite/category.xml
index 023163d..17527c4 100644
--- a/org.eclipse.nebula.widgets.nattable.updatesite/category.xml
+++ b/org.eclipse.nebula.widgets.nattable.updatesite/category.xml
@@ -12,12 +12,6 @@
    <feature url="features/org.eclipse.nebula.widgets.nattable.extension.poi.source.feature_1.5.0.qualifier.jar" id="org.eclipse.nebula.widgets.nattable.extension.poi.source.feature" version="1.5.0.qualifier">
       <category name="nattable-extensions"/>
    </feature>
-   <feature url="features/org.eclipse.nebula.widgets.nattable.extension.e4.feature_1.0.0.qualifier.jar" id="org.eclipse.nebula.widgets.nattable.extension.e4.feature" version="1.0.0.qualifier">
-      <category name="nattable-extensions"/>
-   </feature>
-   <feature url="features/org.eclipse.nebula.widgets.nattable.extension.e4.source.feature_1.0.0.qualifier.jar" id="org.eclipse.nebula.widgets.nattable.extension.e4.source.feature" version="1.0.0.qualifier">
-      <category name="nattable-extensions"/>
-   </feature>
    <feature url="features/org.eclipse.nebula.widgets.nattable.core.feature_1.5.0.qualifier.jar" id="org.eclipse.nebula.widgets.nattable.core.feature" version="1.5.0.qualifier">
       <category name="nattable-core"/>
    </feature>
@@ -30,6 +24,12 @@
    <feature url="features/org.eclipse.nebula.widgets.nattable.extension.nebula.source.feature_1.1.0.qualifier.jar" id="org.eclipse.nebula.widgets.nattable.extension.nebula.source.feature" version="1.1.0.qualifier">
       <category name="nattable-extensions"/>
    </feature>
+   <feature url="features/org.eclipse.nebula.widgets.nattable.extension.e4.feature_1.1.0.qualifier.jar" id="org.eclipse.nebula.widgets.nattable.extension.e4.feature" version="1.1.0.qualifier">
+      <category name="nattable-extensions"/>
+   </feature>
+   <feature url="features/org.eclipse.nebula.widgets.nattable.extension.e4.source.feature_1.1.0.qualifier.jar" id="org.eclipse.nebula.widgets.nattable.extension.e4.source.feature" version="1.1.0.qualifier">
+      <category name="nattable-extensions"/>
+   </feature>
    <category-def name="nattable-core" label="NatTable Core">
       <description>
          NatTable Core plugin
