excle 由于一些内容不可读取。excle无法打开,提示需要修复

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/MeiX505/article/details/44651153

            今天在用java进行数据导出,结果数据导出来了,但是excle打开报的有错误信息,如图:

           


点击打开并修复,查看数据也没问题。开始的时候一直没注意什么不可读取,最后发现 sheel里面的我设置的名称,加了一个时间,估计是有特殊字符的问题。把这个时间去掉,打开excle就没问题

希望可以帮助到您!


展开阅读全文

关于读取Excle一些小问题

06-12

各位朋友:rn我有一些关于读取Excle的问题想问一下:rn我想弄一个代码是,将Excle中的内容以xml格式的方法读出来,下面是我的一段代码,是读取Excle内容的。rn[code=Java][/code]rnimport java.io.FileInputStream;rnimport java.io.FileNotFoundException;rnimport java.io.IOException;rnimport java.io.InputStream;rnimport java.util.Date;rnimport java.util.HashMap;rnimport java.util.Map;rnrnimport org.apache.poi.hssf.usermodel.HSSFCell;rnimport org.apache.poi.hssf.usermodel.HSSFRow;rnimport org.apache.poi.hssf.usermodel.HSSFSheet;rnimport org.apache.poi.hssf.usermodel.HSSFWorkbook;rnimport org.apache.poi.poifs.filesystem.POIFSFileSystem;rnrn/** rn* 操作Excel表格的功能类 rn* @author:hnylj rn* @version 1.0 rn*/ rnpublic class ExcelReader rn private POIFSFileSystem fs; rn private HSSFWorkbook wb; rn private static HSSFSheet sheet; rn private HSSFRow row; rn /** rn * 读取Excel表格表头的内容 rn * @param InputStream rn * @return String 表头内容的数组 rn * rn */ rn public String[] readExcelTitle(InputStream is) rn try rn fs = new POIFSFileSystem(is); rn wb = new HSSFWorkbook(fs); rn catch (IOException e) rn e.printStackTrace(); rn rn sheet = wb.getSheetAt(0); rn row = sheet.getRow(0); rn //标题总列数 rn int colNum = row.getPhysicalNumberOfCells(); rn String[] title = new String[colNum]; rn for (int i=0; i readExcelContent(InputStream is) rn Map content = new HashMap(); rn String str = ""; rn try rn fs = new POIFSFileSystem(is); rn wb = new HSSFWorkbook(fs); rn catch (IOException e) rn e.printStackTrace(); rn rn sheet = wb.getSheetAt(0); rn //得到总行数 rn int rowNum = sheet.getLastRowNum(); rn row = sheet.getRow(0); rn int colNum = row.getPhysicalNumberOfCells(); rn //正文内容应该从第二行开始,第一行为表头的标题 rn for (int i = 1; i <= rowNum-1; i++) rn row = sheet.getRow(i); rn int j = 0; rn while (j < colNum) rn //每个单元格的数据内容用"-"分割开,以后需要时用String类的replace()方法还原数据 rn //也可以将每个单元格的数据设置到一个javabean的属性中,此时需要新建一个javabean rn str += getStringCellValue(row.getCell((short) j)).trim() + "-"; rn j ++; rn rn content.put(i, str); rn str = ""; rn rn return content; rn rn rn /** rn * 获取单元格数据内容为字符串类型的数据 rn * @param cell Excel单元格 rn * @return String 单元格数据内容 rn */ rn private String getStringCellValue(HSSFCell cell) rn String strCell = ""; rn switch (cell.getCellType()) rn case HSSFCell.CELL_TYPE_STRING: rn strCell = cell.getStringCellValue(); rn break; rn case HSSFCell.CELL_TYPE_NUMERIC: rn strCell = String.valueOf(cell.getNumericCellValue()); rn break; rn case HSSFCell.CELL_TYPE_BOOLEAN: rn strCell = String.valueOf(cell.getBooleanCellValue()); rn break; rn case HSSFCell.CELL_TYPE_BLANK: rn strCell = ""; rn break; rn default: rn strCell = ""; rn break; rn rn if (strCell.equals("") || strCell == null) rn return ""; rn rn if (cell == null) rn return ""; rn rn return strCell; rn rn rn /** rn * 获取单元格数据内容为日期类型的数据 rn * @param cell Excel单元格 rn * @return String 单元格数据内容 rn */ rn private String getDateCellValue(HSSFCell cell) rn String result = ""; rn try rn int cellType = cell.getCellType(); rn if (cellType == HSSFCell.CELL_TYPE_NUMERIC) rn Date date = cell.getDateCellValue(); rn result = (date.getYear() + 1900) + "-" + (date.getMonth() + 1) rn + "-" + date.getDate(); rn else if (cellType == HSSFCell.CELL_TYPE_STRING) rn String date = getStringCellValue(cell); rn result = date.replaceAll("[年月]", "-").replace("日", "").trim(); rn else if (cellType == HSSFCell.CELL_TYPE_BLANK) rn result = ""; rn rn catch (Exception e) rn System.out.println("日期格式不正确!"); rn e.printStackTrace(); rn rn return result; rn rn rn public static void main(String[] args) rn try rn //对读取Excel表格标题测试 rn InputStream is = new FileInputStream("D:\\test.xls"); rn ExcelReader excelReader = new ExcelReader(); rn String[] title = excelReader.readExcelTitle(is); rn System.out.println("获得Excel表格的标题:"); rn for (String s : title) rn System.out.print(s + " "); rn rn rn //对读取Excel表格内容测试 rn InputStream is2 = new FileInputStream("D:\\test.xls"); rn Map map = excelReader.readExcelContent(is2); rn System.out.println(); rn System.out.println("获得Excel表格的内容:"); rn for (int i=1; i<=map.size(); i++) rn System.out.println(map.get(i).replace("-", " ")); rn rn catch (FileNotFoundException e) rn System.out.println("未找到指定路径的文件!"); rn e.printStackTrace(); rn rn rn rn[code=Java][/code]rn我的Excle的内容是:rn中文 英文 属性 值rn阿尔卑斯运动 ALPINE OROGENY S 造山运动rn阿尔卑斯运动 ALPINE OROGENY C 燕山运动 印支运动rn阿尔法粒子 ALPHA PARTICLE D α粒子rnrn运行后输出的内容是:rn获得Excel表格的标题:rn中文 英文 属性 值 rn获得Excel表格的内容:rn阿尔卑斯运动 ALPINE OROGENY S 造山运动 rn阿尔卑斯运动 ALPINE OROGENY C 燕山运动 印支运动 rn阿尔法粒子 ALPHA PARTICLE D α粒子 rnrn我想让运行后输出的内容是:rnrn当读到第3列属性时,所要输出的内容是:rnrn当读到第4列值时,所输出的内容是:rnrnrn之后还有一个问题是:我上面的代码输出是系统输出,我想让输出是以文件的格式输出,后缀名就是.xml。rn大家谁能帮帮忙,在这里谢谢了!!!rn 论坛

没有更多推荐了,返回首页