首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

导出excel读取excel有关问题

2012-08-15 
导出excel读取excel问题我用pl/sql将数据库中的数据先导出到了cvs文件中,然后用excel打开另存为一个.xls的

导出excel读取excel问题
我用pl/sql将数据库中的数据先导出到了cvs文件中,
然后用excel打开另存为一个.xls的excel文件。
问题就出现了,导出数据中的身份证号等excel就会转成指数形式,这样就造成了身份证号后几位的值丢失。

cvs文件用记事本打开的时候里面的数据还是正确的,另存为excel就出错了。

有没有什么办法取到完整的数据?

Java code
import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.DateUtil;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.ss.usermodel.WorkbookFactory;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;


Java code
if (file.getName().endsWith(".xls")) {            FileInputStream fis = null;            try {                fis = new  FileInputStream(file);                Workbook wb = WorkbookFactory.create(fis);                int numberOfSheets = wb.getNumberOfSheets();                for (int i = 0; i < numberOfSheets; i++) {                    Sheet sheet = wb.getSheetAt(i);                    if(sheet == null){                        continue;                    }                    Row firstRow = sheet.getRow(0);                    int lastRowNum = sheet.getLastRowNum();                    for (int j = 0; j <= lastRowNum; j++) {                        if(j == 0){                            continue;                        }                        Map<String, String> rowData = new HashMap<String, String>();                        Row row = sheet.getRow(j);                        short lastCellNum = row.getLastCellNum();                        for (int k = 0; k < lastCellNum; k++) {                            Cell cell = row.getCell(k);                            if(cell == null){                                continue;                            }                            String value= null;                            int cellType = cell.getCellType();                            switch(cellType){                            case Cell.CELL_TYPE_BLANK:                                break;                            case Cell.CELL_TYPE_BOOLEAN:                                value = String.valueOf(cell.getBooleanCellValue());                                break;                            case Cell.CELL_TYPE_ERROR:                                value = String.valueOf(cell.getErrorCellValue());                                break;                            case Cell.CELL_TYPE_NUMERIC:                                if(DateUtil.isCellDateFormatted(cell)){                                    value = format.format(cell.getDateCellValue());                                }else{                                    value = String.valueOf(cell.getNumericCellValue());                                }                                break;                            case Cell.CELL_TYPE_STRING:                                value = cell.getStringCellValue();                                break;                                default:break;                            }                            Cell cellOfFirstRow = firstRow.getCell(k);                            if(cellOfFirstRow != null){                                rowData.put(cellOfFirstRow.getStringCellValue(), value);                            }                        }                        rowData.put("rowNum", String.valueOf(j));                        rowData.put("reortTaskfileid", String.valueOf(reortTaskfileid));                        data.add(rowData);                    }                }            } catch (Exception e) {                e.printStackTrace();            }            return data; 



急。。。。求高手解答。



[解决办法]
探讨
我用pl/sql将数据库中的数据先导出到了cvs文件中,
然后用excel打开另存为一个.xls的excel文件。
问题就出现了,导出数据中的身份证号等excel就会转成指数形式,这样就造成了身份证号后几位的值丢失。

cvs文件用记事本打开的时候里面的数据还是正确的,另存为excel就出错了。

[解决办法]
嗯,是excel显示的问题。
可以在excel里把一列的单元格设置一下,设置成文本,这时再粘进来身份证号,就显示是正常的。
[解决办法]
1.导出为csv文件,
2,将csv文件重命名为dif文件,
3,用excel打开dif文件,会提示设置分隔符,设置格式,将身份证号设置为文本就可以了

热点排行