第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > java读取excel文件单元格英文出现乱码问题的解决方法

java读取excel文件单元格英文出现乱码问题的解决方法

时间:2023-03-29 10:52:37

相关推荐

java读取excel文件单元格英文出现乱码问题的解决方法

小编今天测试读取excel文件,并且取其中的几个单元格作为文件名称的时候,发现文件名出现了乱码,毫无疑问,肯定就是读取excel的时候,取出来就出现了乱码,如图所示

excel原单元格数据,如图所示

首先这里不是中文乱码的问题,反而是英文的时候出现乱码,

然后查阅了许多网上的解决办法,最终最好的解决办法是,在读取excel 的时候,

加上WorkbookSettings,代码如下所示

WorkbookSettings workbookSettings = new WorkbookSettings();workbookSettings.setEncoding("ISO-8859-1");Workbook wb= Workbook.getWorkbook(new File("D:\\excel\\111.xls"),workbookSettings);

完整测试代码如下

package com.jxlgnc.demo.util;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import jxl.Cell;import jxl.Sheet;import jxl.Workbook;import jxl.read.biff.BiffException;import jxl.WorkbookSettings;/*** Created by yjl on -07-18.*/public class GetExcelInfo {/*public static void main(String[] args) {GetExcelInfo obj = new GetExcelInfo();// 这个是excel数据文件File file = new File("E:/111.xls");//obj.readExcel(file);try {//得到所有数据List<List<String>> allData=readExcel2(file);System.out.println(allData);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}*/// 去读Excel的方法readExcel,该方法的入口参数为一个File对象public static void readExcel(File file) {try {// 创建输入流,读取ExcelInputStream is = new FileInputStream(file.getAbsolutePath());// jxl提供的Workbook类//Workbook wb = Workbook.getWorkbook(is);//这样会出现乱码,改成下面的这种形式WorkbookSettings workbookSettings = new WorkbookSettings();workbookSettings.setEncoding("ISO-8859-1");Workbook wb= Workbook.getWorkbook(is,workbookSettings); // Excel的页签数量int sheet_size = wb.getNumberOfSheets();for (int index = 0; index < sheet_size; index++) {// 每个页签创建一个Sheet对象Sheet sheet = wb.getSheet(index);// sheet.getRows()返回该页的总行数for (int i = 0; i < sheet.getRows(); i++) {// sheet.getColumns()返回该页的总列数for (int j = 0; j < sheet.getColumns(); j++) {String cellinfo = sheet.getCell(j, i).getContents();System.out.println(cellinfo);}}}} catch (FileNotFoundException e) {e.printStackTrace();} catch (BiffException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 获取数据* @param file* @return* @throws Exception*/public static List<List<String>> readExcel2(File file) throws Exception {// 创建输入流,读取ExcelInputStream is = new FileInputStream(file.getAbsolutePath());// jxl提供的Workbook类//Workbook wb = Workbook.getWorkbook(is);//这样会出现乱码,改成下面的这种形式WorkbookSettings workbookSettings = new WorkbookSettings();workbookSettings.setEncoding("ISO-8859-1");Workbook wb= Workbook.getWorkbook(is,workbookSettings); // 只有一个sheet,直接处理//创建一个Sheet对象Sheet sheet = wb.getSheet(0);// 得到所有的行数int rows = sheet.getRows();// 所有的数据List<List<String>> allData = new ArrayList<List<String>>();// 越过第一行 它是列名称for (int j = 1; j < rows; j++) {List<String> oneData = new ArrayList<String>();// 得到每一行的单元格的数据Cell[] cells = sheet.getRow(j);for (int k = 0; k < cells.length; k++) {oneData.add(cells[k].getContents().trim());}// 存储每一条数据allData.add(oneData);// 打印出每一条数据//System.out.println(oneData);}return allData;}}

参考文章链接:/wattone/archive//05/04/1727314.html

感谢原作者的分享,让技术人能够更快的解决问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。