Free Support Forum - aspose.com

Aspose cells html转xls中文乱码

我的文件是html通过加了响应头变成的xls 如下方式
response.setContentType(“application/vnd.ms-excel”);
response.setHeader(“Content-Disposition”, “attachment; filename=”" + fileName + “.xls”");
fake.zip (2.2 KB)

我想用aspose cells转换成正常格式的excel
代码如下
Workbook workbook = new Workbook(“E:\fake.xls”);
workbook.save(“E:\true.xls”, com.aspose.cells.SaveFormat.EXCEL_97_TO_2003);

结果转出来的文件中文乱码 格式也变了
图片.png (212.1 KB)

但是神奇的是 在原文件 fake.xls中 随便做一点修改并保存 再进行上述转换操作 就没有乱码
请问这该怎么解决

还有在jsp 修改响应头得到的xls文件 进行转换 会报如下错误 能否解决
Exception in thread “main” java.lang.IllegalStateException: This is not a structured storage file.

@beoned,

感谢您提供模板文件和屏幕截图。

经过初步测试,我能够按照您所说的重现该问题。我发现一个问题,在HTML到XLS的转换中中文文本出现乱码,输出文件中的数据乱码了,例如 ``�’’ 而不是中文文本。您所谓的XLS文件实际上是HTML文件。我在您的文件中使用了以下示例代码:
例如
样例代码:

HtmlLoadOptions options = new HtmlLoadOptions(LoadFormat.HTML);
		Workbook workbook = new Workbook ("f:\\files\\fake.xls", options);
		workbook.save ("f:\\files\\true.xls", com.aspose.cells.SaveFormat.EXCEL_97_TO_2003);

对于您的问题,我已记录了一个ID为“ CELLSJAVA-43129”的故障单。我们将尽快调查。

更新后,我们会通知您。

@beoned,
这是为了通知您,我们已解决您的问题(先前记录为“ CELLSJAVA-43129”)。 在执行质量检查并合并其他增强功能和修补程序之后,我们很快会为您提供固定版本。

@beoned,

请尝试使用我们的最新版本/修复程序:Aspose.Cells for Java v20.2.2(随附)。

您的问题应该已解决。

让我们知道您的反馈。
Aspose_Cells_Java_v20.2.2.zip (6.7 MB)

辛苦了 但是我项目用的jdk1.6 是无法使用最新版本的 请问 该问题通过什么方法解决的 造成该问题的原因是什么 能从不改源码(升级版本)的路径解决吗

@beoned,
最新版本应与JDK 1.6兼容。 请说明您面临的兼容性问题?

关于问题的根本原因,我们正在收集详细信息,并将尽快与您联系。

我之前问过的问题 最新版本19.6是否支持jdk1.6

得到的回答是
图片.png (57.7 KB)
从19.3版本开始从1.6变成1.7 你确定这个20.2.2可以兼容jdk1.6吗

刚才测试了一下 还是乱码

@beoned,

屏幕截图显示您正在使用Aspose.Words API遇到此问题,不是吗?您还通过Aspose.Cells API找到了此问题吗?您的JDK版本和环境详细信息是什么。

我的截图是excel html文件包 通过改响应头生成的xls文件 然后转正常的 SaveFormat.EXCEL_97_TO_2003
获得如下文件 乱码
exportInfo.zip (61.3 KB)

jdk是 1.6 tomcat6 开发工具idea

@beoned,

感谢您导出XLS文件。

您正在使用的源文件似乎与以前附加的源文件(html)不同。请压缩源文件并再次将其附加在此处,我们将使用Aspose.Cells for Java v20.2.2测试转换(从HTML到XLS)。

PS。我们使用您以前的源文件进行了测试,并且工作正常,并且发现Aspose.Cells for Java v20.2.2没有问题。

已测试 有两个问题 使用如下代码
HtmlLoadOptions options = new HtmlLoadOptions(com.aspose.cells.LoadFormat.HTML);
Workbook workbook = new Workbook(“E://text.xls”,options);
workbook.save(“E://true.xls”, com.aspose.cells.SaveFormat.EXCEL_97_TO_2003);

1 在public static void main(String[] args)中 正常输出 但在项目正常action中 会报如下错误
java.lang.NoSuchMethodError: com.aspose.cells.zbzn: method ()V not found
at com.aspose.cells.HtmlLoadOptions.(Unknown Source)

2main 方法输出的xls中 格式发生了变化
原文件:图片.png (43.6 KB)

现文件:图片.png (83.5 KB)
单元格长度变了 原来的长度变成了 都一样的长度 导致有的文字信息变成#####

@beoned,

感谢您的截图。

我要求您提供源文件。请压缩源文件并再次将其附加在此处,我们将尽快对其进行检查。

1 第一个问题 和文件无关 我的是java web项目 任何文件在action类中执行到
HtmlLoadOptions options = new HtmlLoadOptions(com.aspose.cells.LoadFormat.HTML);
这一句时都会报java.lang.NoSuchMethodError: com.aspose.cells.zbzn: method ()V not found的错 此时还未调用到文件 而在main方法中不会报错

2第二个问题 main方法中能成功运行不报错 使用的也是20.2.2 但格式发生上条回复截图的变化
文件如下
前:text.zip (2.3 KB)
后:true.zip (7.0 KB)

和我最开始的问题一样的处理 对该原文件进行任何改动 哪怕敲一个空格 再进行转换就不会出现问题

目前对我来说 问题1的急迫性大于问题2 你肯定知道项目中肯定是没有main方法的

@beoned,

我使用示例文件“ test.xls”(这是一个HTML文件)对其进行了测试,并且工作正常,您可以在代码段中添加一行代码(关于自动调整行/列)。我找不到任何问题来处理文件并生成输出文件。请参阅以下示例代码以供参考:
例如
样例代码:

HtmlLoadOptions options = new HtmlLoadOptions(LoadFormat.HTML);
		options.setAutoFitColsAndRows(true);
		Workbook workbook = new Workbook ("f:\\files\\text.xls", options);
		workbook.save ("f:\\files\\out1.xls", com.aspose.cells.SaveFormat.EXCEL_97_TO_2003);

请参阅随附的输出文件以供参考。

我无法理解,因为您告诉您一个错误:
“HtmlLoadOptions options = new HtmlLoadOptions(com.aspose.cells.LoadFormat.HTML);
这一句时都会报java.lang.NoSuchMethodError: com.aspose.cells.zbzn: method ()V not found的错 此时还未调用到文件 而在main方法中不会报错”
同时,您告诉它运行正常,并且还附加了输出文件。
out1.zip (7.1 KB)

ok 解决了 thank you

@beoned,

很高兴知道您的问题现在已经解决。

如有任何其他疑问或问题,请随时与我们联系,我们将竭诚为您服务。

还有个小问题 之前说的19.3以上就不支持jdk1.6了 必须是1.7及以上了
这个20.2.2为什么又支持1.6了
是否说现在所有的最新版本又可以支持jdk1.6了 包括aspose word

另外发现一个问题 原文件中诸如12345789012345678 这种长的数据 例如身份证号 会变成 2.30882E+17
这样的科学计数法 这个该怎么设置