使用Apache POI XSSF将Unicode字符从Java写入Excel文件;。xlsx";
我正在处理一个项目,该项目目前使用XSSF工作簿将数据写入Excel文件。我在将字符写入Excel文档并使其正确显示时遇到问题 我使用Pattern和Matcher查找文本中的其他标记,并用相应的Unicode字符替换它们使用Apache POI XSSF将Unicode字符从Java写入Excel文件;。xlsx";,java,unicode,apache-poi,Java,Unicode,Apache Poi,我正在处理一个项目,该项目目前使用XSSF工作簿将数据写入Excel文件。我在将字符写入Excel文档并使其正确显示时遇到问题 我使用Pattern和Matcher查找文本中的其他标记,并用相应的Unicode字符替换它们 private static String replaceTags(String stringToChange, String replacementTag, String originalTag) { Pattern pattern = Pattern.compil
private static String replaceTags(String stringToChange, String replacementTag, String originalTag) {
Pattern pattern = Pattern.compile(originalTag);
Matcher matcher = pattern.matcher(stringToChange);
return matcher.replaceAll(replacementTag);
}
我在代码中调用该函数来查找和替换文本中的标记。它适用于我的大多数替换标签,但不适用于商标符号和引号之类的东西,因为我不能用它们的实际符号作为替换,我必须为它们使用Unicode
if (replacementString.contains("%0022")) {
replacementString = replaceTags(replacementString, "\\U005C", "%0022");
}
c.setCellValue(replacementString);
现在我遇到的问题是,当我将字符串写入Excel文件时,Excel会忽略U005C
前面的反斜杠,并像普通文本一样将代码写出。有没有办法让这些字符从我丢失的代码中显示出来,或者甚至可以这样做
更新:
我已经得到了所有我需要的符号,除了引号。使用
\\\\U005c
或\\\\U0022
会使Excel电子表格显示\U005c或\U0022,而不是“
”只是一个猜测,但可能需要双重转义,因为Excel格式本身是内部引用的…即“\\\\\U005c”
写入“\\\\U005c”“
。但是我不理解整个上下文。这里是程序的更多上下文。我们在这个电子表格中有两列,一列包含文本块,其中包含表示将代替这些标记的特殊符号的标记。例如:手机不会说“Hello world”,而是说%2122 Hello world%2122。使用这些标记来表示引号。另一列将显示全文,包括引号、标点符号等特殊字符。你们建议的是程序输出,excel显示斜杠,但我需要excel显示字符,而不是unicode。您是否确保您的字体中包含所有必需的字符?