diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/excel/poi/StreamedPoiSheetWriter.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/excel/poi/StreamedPoiSheetWriter.java
index 5579634a..43afbad7 100644
--- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/excel/poi/StreamedPoiSheetWriter.java
+++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/reporting/excel/poi/StreamedPoiSheetWriter.java
@@ -24,7 +24,6 @@ package com.kingsrook.qqq.backend.core.actions.reporting.excel.poi;
import java.io.IOException;
import java.io.Writer;
-import java.util.regex.Pattern;
import org.apache.poi.ss.util.CellReference;
@@ -34,8 +33,6 @@ import org.apache.poi.ss.util.CellReference;
*******************************************************************************/
public class StreamedPoiSheetWriter
{
- private static Pattern xmlSpecialChars = Pattern.compile(".*[&<>'\"].*");
-
private final Writer writer;
private int rowNo;
@@ -71,8 +68,8 @@ public class StreamedPoiSheetWriter
public void endSheet() throws IOException
{
writer.write("""
-
- """);
+
+ """);
}
@@ -111,8 +108,11 @@ public class StreamedPoiSheetWriter
{
writer.write(" s=\"" + styleIndex + "\"");
}
+
+ String cleanValue = cleanseValue(value);
+
writer.write(">");
- writer.write("" + cleanseValue(value) + "");
+ writer.write("" + cleanValue + "");
writer.write("");
}
@@ -123,15 +123,18 @@ public class StreamedPoiSheetWriter
*******************************************************************************/
public static String cleanseValue(String value)
{
- // todo - profile...
- if(xmlSpecialChars.matcher(value).find())
+ if(value != null)
{
- value = value.replace("&", "&");
- value = value.replace("<", "<");
- value = value.replace(">", ">");
- value = value.replace("'", "'");
- value = value.replace("\"", """);
+ if(value.indexOf('&') > -1 || value.indexOf('<') > -1 || value.indexOf('>') > -1 || value.indexOf('\'') > -1 || value.indexOf('"') > -1)
+ {
+ value = value.replace("&", "&");
+ value = value.replace("<", "<");
+ value = value.replace(">", ">");
+ value = value.replace("'", "'");
+ value = value.replace("\"", """);
+ }
}
+
return (value);
}
@@ -191,13 +194,16 @@ public class StreamedPoiSheetWriter
public void createCell(int columnIndex, Boolean value, int styleIndex) throws IOException
{
String ref = new CellReference(rowNo, columnIndex).formatAsString();
- writer.write("");
- writer.write("" + value + "");
+ if(value != null)
+ {
+ writer.write("" + (value ? 1 : 0) + "");
+ }
writer.write("");
}