Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';无法为JExcel/jxl获得正确的编码_Java_Excel_Jexcelapi - Fatal编程技术网

Java Can';无法为JExcel/jxl获得正确的编码

Java Can';无法为JExcel/jxl获得正确的编码,java,excel,jexcelapi,Java,Excel,Jexcelapi,我在使用JExcel时遇到了字符编码问题。 我的应用程序从模板创建excel文档,并在将其发送给用户之前使用数据库中的数据(填充当前和以前的会话用户输入)填充该文档。 在最终文档中,模板中的非ASCII字符,如é、è、è或°没有正确呈现(在生成的文档中,它们正确地出现在模板中),而是被�而数据库中的数据已正确编码 我使用UTF-8进行用户输入(并输出到查看层)和数据库存储 我在生成文件的类中使用以下代码: private void createFile(Arguments...)

我在使用JExcel时遇到了字符编码问题。 我的应用程序从模板创建excel文档,并在将其发送给用户之前使用数据库中的数据(填充当前和以前的会话用户输入)填充该文档。 在最终文档中,模板中的非ASCII字符,如
é
è
è
°
没有正确呈现(在生成的文档中,它们正确地出现在模板中),而是被
而数据库中的数据已正确编码

我使用UTF-8进行用户输入(并输出到查看层)和数据库存储

我在生成文件的类中使用以下代码:

    private void createFile(Arguments...)
            throws IOException, BiffException, RowsExceededException, WriteException
    {
            File XLSFile = new File(MyPath);
            WorkbookSettings XLSSettings = new WorkbookSettings()
            XLSSettings.setEncoding(Constants.TEMPLATE_ENCODING)
            // Constants.java is a class containing only app-wide constants declared as public static final
            Workbook template = Workbook.getWorkbook(
                    new File(Constants.TEMPLATE_PATH));
            WritableWorkbook userDocument =
                    Workbook.createWorkBook(XLSFile,template,XLSSettings);
            template.close();
            WritableSheet sheet = userDocument.getSheet(0);

            ...
                    Code that fills my workbook and sheet by creating new Labels and
                    adding them to my WritableSheet with sheet.add(Label)
            ...

            userDocument.write();
            userDocument.close();
    }
常量。模板编码已按此问题中的建议设置为
“Cp1252”
:但无效

尝试将其更改为
“UTF-8”
也没有产生可见的更改

否则,应用程序在各个级别都可以正常工作。 我想这可能是一个问题,设置正确的编码时,打开和复制模板,并试图改变这一行

Workbook template=Workbook.getWorkbook(新文件(常量.template_路径);

Workbook template=Workbook.getWorkbook(新文件(Constants.template_PATH,XLSSettings);

但是它在
java.lang.System.arraycopy
中生成了一个ArrayOutOfBoundException,从这一行
userDocument.write();
通过

    java.lang.ArrayIndexOutOfBoundsException
        java.lang.System.arraycopy(Native Method)
        jxl.biff.StringHelper.getBytes(StringHelper.java:127)
        jxl.write.biff.WriteAccessRecord.<init>(WriteAccessRecord.java:59)
        jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:726)
        com.mypackage.MyClass.createFile(MyClass.java:337)
java.lang.ArrayIndexOutOfBoundsException
java.lang.System.arraycopy(本机方法)
jxl.biff.StringHelper.getBytes(StringHelper.java:127)
WriteAccessRecord.java:59
jxl.write.biff.WritableWorkbookImpl.write(WritableWorkbookImpl.java:726)
com.mypackage.MyClass.createFile(MyClass.java:337)

有人遇到过这个问题并知道如何解决吗?

我也面临着这个问题。对我来说,解决方法非常简单。我只需将工作簿设置放在模板wb中,而不是放在新文件中

//Load template workbook with settings
WorkbookSettings ws = new WorkbookSettings();
ws.setEncoding("Cp1252");

Workbook templateWorkbook = Workbook.getWorkbook(this.context.getAssets().open("template.xls"), ws);

//Create new workbook from templateWorkbook without settings
this.workbook = Workbook.createWorkbook(new File(this.location), templateWorkbook);
网址:

问候