diff --git a/ooxml/XSSF/Streaming/SheetDataWriter.cs b/ooxml/XSSF/Streaming/SheetDataWriter.cs
index c2d9a511d..69a0b63e9 100644
--- a/ooxml/XSSF/Streaming/SheetDataWriter.cs
+++ b/ooxml/XSSF/Streaming/SheetDataWriter.cs
@@ -471,12 +471,19 @@ protected void OutputQuotedString(string s)
break;
// Special characters
case '\n':
+ if(counter > last)
+ {
+ WriteAsBytes(GetSubArray(chars, last, counter - last));
+ }
+ WriteAsBytes("
");
+ last = counter + 1;
+ break;
case '\r':
if (counter > last)
{
WriteAsBytes(GetSubArray(chars, last, counter - last));
}
- WriteAsBytes("
");
+ WriteAsBytes("
");
last = counter + 1;
break;
case '\t':
diff --git a/testcases/ooxml/XSSF/Streaming/SheetDataWriterTests.cs b/testcases/ooxml/XSSF/Streaming/SheetDataWriterTests.cs
index 3642123c4..a997d923a 100644
--- a/testcases/ooxml/XSSF/Streaming/SheetDataWriterTests.cs
+++ b/testcases/ooxml/XSSF/Streaming/SheetDataWriterTests.cs
@@ -333,7 +333,7 @@ public void IfCellTypeIsStringShouldWriteStringCellXml()
var lines = File.ReadAllLines(_objectToTest.TemporaryFilePath());
Assert.True(lines.Length == 1);
- Assert.AreEqual("\'\'<>
&"? test:SLDFKj ", lines[0]);
+ Assert.AreEqual("\'\'<>
&"? test:SLDFKj ", lines[0]);
}