首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jexcelapi中编码

在jexcelapi中编码
EN

Stack Overflow用户
提问于 2011-12-08 08:23:43
回答 2查看 2.2K关注 0票数 1

我使用jexcelapi for android

我写下了字符串"Hello jExcelAPI!",但当我阅读时,我看到了中文符号。

我怎么才能修复它?

提前谢谢。

附言:也许它有帮助:我不知道在ws.setCharacterSet(Cs)中需要给出什么;

代码语言:javascript
复制
package ru.elvigl.hello;

import java.io.File;
import java.io.IOException;
import java.util.Locale;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class HellojExcelAPIActivity extends Activity {

    final File file = new File("/sdcard/Folder/File.xls");

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void btnExport_Click(View v) throws IOException, RowsExceededException, WriteException {
        WorkbookSettings ws = new WorkbookSettings();

        //ws.setCharacterSet(cs);
        ws.setEncoding("Cp1251");
        ws.setExcelDisplayLanguage("RU");
        ws.setExcelRegionalSettings("RU");
        ws.setLocale(new Locale("ru", "RU"));

        WritableWorkbook workbook = Workbook.createWorkbook(file, ws); 
        WritableSheet sheet = workbook.createSheet("First Sheet", 0); 

        Label label = new Label(0, 0, "Hello jExcelAPI!");
        sheet.addCell(label); 

        workbook.write();
        workbook.close(); 
    }

    public void btnImport_Click(View v) throws BiffException, IOException {

        WorkbookSettings ws = new WorkbookSettings();

        //ws.setCharacterSet(cs);
        ws.setEncoding("Cp1251");
        ws.setExcelDisplayLanguage("RU");
        ws.setExcelRegionalSettings("RU");
        ws.setLocale(new Locale("ru", "RU"));

        Workbook workbook = Workbook.getWorkbook(file, ws); 
        Sheet sheet = workbook.getSheet(0); 
        Cell a1 = sheet.getCell(0,0); 
        String str = a1.getContents();

        TextView tv = (TextView) findViewById(R.id.tvCellValue);
        tv.setText(str);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-08 09:00:43

下面是“WorkbookSettings”类的文档:http://jexcelapi.sourceforge.net/resources/javadocs/2_6_10/docs/jxl/WorkbookSettings.html方法"setCharacterSet“似乎只用于读取(导入)电子表格,如果有帮助,不会导出。至于中文字符,我认为是由于您的地区而显示的。我将使用这些常量通过适当的语言和国家/地区构造函数参数正确地实例化您的语言环境对象:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Locale.html

票数 1
EN

Stack Overflow用户

发布于 2011-12-09 05:23:55

我不知道该怎么办:

new java.util.Local(Locale.ENGLISH)是不正确的构造函数。

我使用jdk-6u29,现在我使用jdk-7u1。

在Eclipse中,我使用:

  • "UTF-8“文本文件编码
  • 编译器编译器1.6版

我在安卓和PC上创建了相同的应用程序,其中我使用的是jexcel_android.jar

关于Hello这个词

在PC byte[] b = a1.getString().getBytes("UTF-8");

  • 72、101、108、108、111

在安卓byte[] b = a1.getString().getBytes("UTF-8");

  • -28,-96,-128,-26,-108,-128,-26,-80,-128,-26,-80,-128,-26,-68,-128

如果在十六进制查看器上打开创建的文件

PC代码如下:

代码语言:javascript
复制
package ru.elvigl.jexcelwin;

import java.io.File;
import java.io.IOException;

import jxl.LabelCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class MainClass {

    final static File file = new File("D:/File.xls");

    public static void main(String[] args) 
            throws RowsExceededException, WriteException, IOException, BiffException {  

        writeFile();
        readFile();
    }

    private static void writeFile() 
            throws RowsExceededException, WriteException, IOException{

        WritableWorkbook workbook = Workbook.createWorkbook(file); 
        WritableSheet sheet = workbook.createSheet("First Sheet", 0); 

        Label label = new Label(0, 0, "Hello");
        sheet.addCell(label);

        workbook.write();
        workbook.close(); 

        System.out.println("File created");
    }

    private static void readFile() 
            throws BiffException, IOException{

        Workbook workbook = Workbook.getWorkbook(file); 
        Sheet sheet = workbook.getSheet(0); 

        LabelCell a1 = (LabelCell) sheet.getCell(0,0);

        byte[] b = a1.getString().getBytes("UTF-8");

        System.out.println(str);
    }
}

Android代码如下:

代码语言:javascript
复制
package ru.elvigl.hello;

import java.io.File;
import java.io.IOException;

import jxl.LabelCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;

public class HellojExcelAPIActivity extends Activity {

    final File file = new File("/sdcard/Folder/File.xls");

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public void btnExport_Click(View v) throws IOException, RowsExceededException, WriteException {

        WritableWorkbook workbook = Workbook.createWorkbook(file); 
        WritableSheet sheet = workbook.createSheet("First Sheet", 0); 

        Label label = new Label(0, 0, "Hello");
        sheet.addCell(label);

        workbook.write();
        workbook.close(); 
    }

    public void btnImport_Click(View v) throws BiffException, IOException {

        Workbook workbook = Workbook.getWorkbook(file); 
        Sheet sheet = workbook.getSheet(0); 

        LabelCell a1 = (LabelCell) sheet.getCell(0,0);

        byte[] b = a1.getString().getBytes("UTF-8");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8424607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档