You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@poi.apache.org by Seshu Rao <Se...@bio-rad.com> on 2005/03/09 22:45:43 UTC
UTF8 issue with HSSF
Hi ,
I am trying to read UTF-8 encoded data into a Java String , and trying
to write it to Excel. However, the data in Excel after the conversion
appears to be in Ascii if I use HSSF, but it works file if I directly
write to a csv file and then import it manually. I appreciate your help in
this regard. Here is my code below.
import com.biorad.webapp.bizlogic.registration.*;
import java.io.*;
import java.lang.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.model.*;
try{
// the following line prints ISO8859_1, which is the default encoding
on my machine
print(new OutputStreamWriter(new
ByteArrayOutputStream()).getEncoding());
// this reads data from the database
BRUserManager usrmgr = new BRUserManager();
BRUser user = usrmgr.getUserByOID(24443);
// if I use Buffered Writer with UTF8 encoding to write to a csv file,
and then import to Excel , it shows japanese characters properly.
//Writer out = new BufferedWriter(new OutputStreamWriter(new
FileOutputStream("abc.txt"),"UTF8"));
//out.write(user.getFirstName());
//out.close();
//write to xls using HSSFWorkbook
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
wb.setSheetName(0,"new sheet",HSSFWorkbook.ENCODING_UTF_16);
HSSFSheet sheet = wb.getSheetAt(0);
// Create a row and put some cells in it. Rows are 0 based.
HSSFRow row = sheet.createRow((short) 1);
// Create a new font and alter it.
HSSFFont font = wb.createFont();
font.setFontHeightInPoints((short)12);
//font.setFontName("Arial Unicode MS");
// Fonts are set into a style so create a new one to use.
HSSFCellStyle style = wb.createCellStyle();
style.setFont(font);
// Create a cell and put a value in it.
HSSFCell cell = row.createCell((short) 1);
cell.setCellValue(user.getFirstName());
cell.setCellStyle(style);
cell.setEncoding((short)HSSFCell.ENCODING_UTF_16);
HSSFCell cell = row.createCell((short) 2);
cell.setCellValue(user.getLastName());
cell.setCellStyle(style);
cell.setEncoding((short) HSSFCell.ENCODING_UTF_16);
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
}
catch(Exception e)
{
e.printStackTrace();
}
Seshu