2012-10-02 2 views
0

Я пытаюсь экспортировать и MS Excel лист из JAVA, который включает в себя некоторые многоязычные (японский) контент. Я пробовал несколько вещей, но многоязычный (японский) контент не отображается правильно в Exported Excel Sheet.Excel Экспорт из JAVA многоязыкового контента

Я подбирая контент из базы данных (я проверил базу данных, то Multi-Language-японское содержание сохраняется должным образом)

String fileName = "output"+".xls"; 
ExcelExport excelExporter = new ExcelExport(); 
excelExporter.ExportExcel(fileName, ....); // Writing Database Fields to Excel 
File file = new File(fileName); 
int length = 0; 
response.setContentType("application/vnd.ms-excel"); 
response.setContentLength((int) file.length()); 
response.setHeader("Content-Disposition", "attachment; filename=\""+ file.getName() + "\""); 
ServletOutputStream outputStream = response.getOutputStream(); 
byte[] bbuf = new byte[1024]; 
DataInputStream in = new DataInputStream(new FileInputStream(file)); 
while ((in != null) && ((length = in.read(bbuf)) != -1)) 
{ 
    outputStream.write(bbuf, 0, length); 
} 

in.close(); 
outputStream.flush(); 
outputStream.close(); 
file.delete(); 

Это показывает мне, кодирующий изо-8859-1 (по используя функцию response.getCharacterEncoding();), это может быть проблемой? Поскольку английский отлично работает в файле Excel, только неправильный язык на нескольких языках (японский)

+0

Вы говорите, что данные Excel поступают из базы данных - как это получается с файлом вашей файловой системы? – RonK

+0

(Post Post), данные Excel заполняются из базы данных функцией excelExporter.ExportExcel(); – ammar26

+1

Что именно происходит не так? Можете быть более конкретными? (Открывается ли файл excel должным образом: некоторые/все слова кажутся искаженными? Кроме того, что такое '' ExcelExporter'', является ли он сторонним? Является ли файл файловой системы действительным или же поврежденным? (Do not удалите его во время тестов) – RonK

ответ

0

Не закрывайте outputStream ответа. Кроме того, используйте BufferedInputStream вместо DataInputStream, который больше подходит для объектов.

Тест на in != null не требуется. Размер bbuf может быть больше, скажем, 4096.

+0

Хорошо, увидев другие комментарии тоже, я заключаю, что исходный файл, с которого вы копируете, уже не является Excel. Если срочно, вы можете лежать, напишите UTF-8 закодированный html-файл с конечным .xls, и Excel возьмет это. –

Смежные вопросы