注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Computer Science

I Pressed My Words Here. Will You Read ?

 
 
 

日志

 
 

用Java基于POI之HSSF实现简单的Excel读写(只支持Excel2003及以前版本的文件)  

2011-07-04 17:56:34|  分类: My Projects |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
这里写了个Excel类用于读写Excel。其中部分功能基于以前写的InputOutput类。
虽然,现在POI已经能够支持Excel的所有类型的文件读写(包括2007),但是由于本次是基于较老的HSSF编写的程序,所以只能支持到2003。

在这里,先贴上用到的InputOut的相关代码:


/**
 *
 */
package com.163.blog.computerscience.excel;

import java.io.File;

/**
 * @author will
 *
 */
public class InputOutput {
    private static String _fileLocation;
    private static String _fileName;
    private static String _fileDirectory;
    private static String _fileContent;
    private static byte[] _byte;

    /**
     * @return the _fileDirection
     */
    public String get_fileLocation() {
        return _fileLocation;
    }

    /**
     * @return the _fileName
     */
    public String get_fileName() {
        return _fileName;
    }

    /**
     * @return the _fileDirectory
     */
    public String get_fileDirectory() {
        return _fileDirectory;
    }

    /**
     * @return the _fileContents
     */
    public String get_fileContent() {
        return _fileContent;
    }

    /**
     * @return the _byte
     */
    public byte[] get_byte() {
        return _byte;
    }

    /**
     * @param fileDirection
     *            the _fileDirection to set
     */
    private static synchronized void set_fileLocation(String fileLocation) {
        _fileLocation = fileLocation;
    }

    /**
     *
     * @param fileName
     *            the _fileName to set
     */
    private static synchronized void set_fileName(String fileName) {
        _fileName = fileName;
    }

    /**
     *
     * @param fileLocation
     *            the _fileLocation to set
     * @param fileName
     *            the _fileName to set <br>
     * <br>
     *            fileLocation and fileName is the _fileDirectory to set.
     */
    public synchronized void set_fileDirectory(String fileLocation,
            String fileName) {
        set_fileLocation(fileLocation);
        set_fileName(fileName);
        _fileDirectory = fileLocation + fileName;
    }

    /**
     *
     * @param fileDirectory
     *            the _fileDirectory to set <br>
     * <br>
     *            _fileDirectory = _fileLocation + _fileName; <br>
     *            _fileLocation and _fileName will be set automatically in this
     *            method. <br>
     */
    public synchronized void set_fileDirectory(String fileDirectory) {
        set_fileLocation(fileDirectory.substring(0, fileDirectory
                .lastIndexOf("/") + 1));
        set_fileName(fileDirectory
                .substring(fileDirectory.lastIndexOf("/") + 1));
        _fileDirectory = fileDirectory;
    }

    /**
     * @param fileContents
     *            the _fileContents to set
     */
    public synchronized void set_fileContent(String fileContent) {
        _fileContent = fileContent;
    }

    /**
     * @param _byte
     *            the _byte to set
     */
    @SuppressWarnings("unused")
    private synchronized void set_byte(byte[] _byte) {
        InputOutput._byte = _byte;
    }

    public InputOutput() {
        // TODO Auto-generated constructor stub
    }
    /**
     * check if the file is exist or not
     *
     * @param fileDirectory
     *            the _fileDirectory to set, and the directory of the file will
     *            be checked.
     * @return true: file is exist; <br>
     *         false: file is not exist.
     */
    public boolean checkIfFileExist(String fileDirectory) {
        set_fileDirectory(fileDirectory);
        File file = new File(get_fileDirectory());
        // System.out.println("file.exists():" + file.exists());
        return file.exists();
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        InputOutput io = new InputOutput();
        System.out.print(io.checkIfFileExist("c:\\Workbook.xls"));
    }

}


然后是Excel类的全部代码:

/**
 *
 */
package com.163.blog.computerscience.excel;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * @author will
 *
 */
public class Excel {
    private static String _fileLocation;
    private static String _fileName;
    private static String _fileDirectory;// _fileDirectory = _fileLocation +
                                            // _fileName
    private static String _fileContent;
    private static HSSFWorkbook _workbook;
    @Deprecated
    private static HSSFWorkbook _originalWorkbook;

    // 0:numeric; 1:string; 2:formula; 3:blank; 4:boolean; 5:error
    public static final int CELL_TYPE_NUMERIC = 0;
    public static final int CELL_TYPE_STRING = 1;
    public static final int CELL_TYPE_FORMULA = 2;
    public static final int CELL_TYPE_BLANK = 3;
    public static final int CELL_TYPE_BOOLEAN = 4;
    public static final int CELL_TYPE_ERROR = 5;

    /**
     * @return the _originalWorkbook
     */
    @Deprecated
    public static synchronized HSSFWorkbook get_originalWorkbook() {
        return _originalWorkbook;
    }

    /**
     * @return the _workbook
     */
    public static synchronized HSSFWorkbook get_workbook() {
        return _workbook;
    }

    /**
     * @param _workbook
     *            the _workbook to set
     */
    public static synchronized void set_workbook(HSSFWorkbook _workbook) {
        Excel._workbook = _workbook;
        // Excel._originalWorkbook = _workbook;
    }

    private static byte[] _byte;

    /**
     * @return the _fileDirection
     */
    public String get_fileLocation() {
        return _fileLocation;
    }

    /**
     * @return the _fileName
     */
    public String get_fileName() {
        return _fileName;
    }

    /**
     * @return the _fileDirectory
     */
    public String get_fileDirectory() {
        return _fileDirectory;
    }

    /**
     * @return the _fileContents
     */
    public String get_fileContent() {
        return _fileContent;
    }

    /**
     * @return the _byte
     */
    public byte[] get_byte() {
        return _byte;
    }

    /**
     * @param fileDirection
     *            the _fileDirection to set
     */
    private static synchronized void set_fileLocation(String fileLocation) {
        _fileLocation = fileLocation;
    }

    /**
     *
     * @param fileName
     *            the _fileName to set
     */
    private static synchronized void set_fileName(String fileName) {
        _fileName = fileName;
    }

    /**
     *
     * @param fileLocation
     *            the _fileLocation to set
     * @param fileName
     *            the _fileName to set <br>
     * <br>
     *            fileLocation and fileName is the _fileDirectory to set.
     */
    public synchronized void set_fileDirectory(String fileLocation,
            String fileName) {
        set_fileLocation(fileLocation);
        set_fileName(fileName);
        _fileDirectory = fileLocation + fileName;
    }

    /**
     *
     * @param fileDirectory
     *            the _fileDirectory to set <br>
     * <br>
     *            _fileDirectory = _fileLocation + _fileName; <br>
     *            _fileLocation and _fileName will be set automatically in this
     *            method. <br>
     */
    public synchronized void set_fileDirectory(String fileDirectory) {
        set_fileLocation(fileDirectory.substring(0,
                fileDirectory.lastIndexOf("/") + 1));
        set_fileName(fileDirectory
                .substring(fileDirectory.lastIndexOf("/") + 1));
        _fileDirectory = fileDirectory;
    }

    /**
     * @param fileContents
     *            the _fileContents to set
     */
    public synchronized void set_fileContent(String fileContent) {
        _fileContent = fileContent;
    }

    /**
     * 读取指定地址的文件
     *
     * @param fileDirectory
     *            文件的地址(含文件名(含格式名))
     * @return true 读取成功;false读取失败,文件不存在;
     * @throws IOException
     * @throws FileNotFoundException
     */
    public boolean read(String fileDirectory) {
        boolean result = true;
        InputOutput io = new InputOutput();
        if (!io.checkIfFileExist(fileDirectory)) {
            result = false;
        } else {
            set_fileDirectory(fileDirectory);
            HSSFWorkbook wb = null;
            try {
                wb = new HSSFWorkbook(new FileInputStream(fileDirectory));
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            set_workbook(wb);
        }
        return result;
    }

    /**
     * 读取指定路径和名称的文件
     *
     * @param fileLocation
     *            文件所在文件夹地址(不含文件名)
     * @param fileName
     *            文件名
     * @return true 读取成功;false 读取失败,文件不存在;
     */
    public boolean read(String fileLocation, String fileName) {
        if (read(fileLocation + fileName)) {
            set_fileLocation(fileLocation);
            set_fileName(fileName);
            return true;
        } else {
            return false;
        }
    }

    /**
     * 读取当前表格路径文件
     *
     * @return true 读取成功; false 读取失败,可能没有设置文件地址
     */
    public boolean read() {
        String fileDirectory = get_fileDirectory();
        if (fileDirectory != null) {
            read(fileDirectory);
            return true;
        }
        return false;
    }

    /**
     * 创建指定地址的文件
     *
     * @param fileDirectory
     *            文件地址
     * @param sheetNames
     *            电子表格文件表单的初始化名称数组。当sheetNames为new String[0]时,默认为『sheet1,
     *            sheet2, sheet3』
     * @return true 文件被成功创建;false 文件已经存在,未再创建;
     * @throws IOException
     */
    public boolean create(String fileDirectory, String[] sheetNames) {
        boolean result = true;
        if (sheetNames == new String[0] || sheetNames == null) {
            sheetNames = new String[] { "sheet1", "sheet2", "sheet3" };
        }
        InputOutput io = new InputOutput();
        HSSFWorkbook wb = new HSSFWorkbook();
        result = io.checkIfFileExist(fileDirectory);
        if (!result) {
            try {
                set_fileDirectory(fileDirectory);
                int count = sheetNames.length;
                for (int i = 0; i < count; i++) {
                    wb.createSheet(sheetNames[i]);
                }
                FileOutputStream fileOut = null;
                fileOut = new FileOutputStream(fileDirectory);
                if (fileOut != null)
                    wb.write(fileOut);
                fileOut.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return !result;
    }

    /**
     * 创建指定地址的文件,默认表单名为『sheet1,sheet2,sheet3』
     *
     * @param fileDirectory
     * @return true 文件被成功创建;false 文件已经存在,未再创建;
     */
    public boolean create(String fileDirectory) {
        return create(fileDirectory, new String[0]);
    }

    /**
     * 创建指定路径及名称的文件。
     *
     * @param fileLocation
     *            文件路径(不含文件名)
     * @param fileName
     *            文件名
     * @param sheetNames
     *            电子表格文件表单的初始化名称数组。当sheetNames为new String[0]时,默认为『sheet1,
     *            sheet2, sheet3』
     * @return true 文件被成功创建;false 文件已经存在,未再创建;
     * @throws IOException
     */
    public boolean create(String fileLocation, String fileName,
            String[] sheetNames) {
        if (create(fileLocation + fileName, sheetNames)) {
            set_fileLocation(fileLocation);
            set_fileName(fileName);
            return true;
        } else {
            return false;
        }
    }

    /**
     * 创建指定路径及名称的文件,默认表单名为『sheet1,sheet2,sheet3』
     *
     * @param fileLocation
     * @param fileName
     * @return true 文件被成功创建;false 文件已经存在,未再创建;
     */
    public boolean create(String fileLocation, String fileName) {
        return create(fileLocation, fileName, new String[0]);
    }

    /**
     * 读取文件,如果文件不存在则创建并读取。
     *
     * @param fileDirectory
     *            文件地址(包含文件名)
     * @param sheetNames
     *            电子表格被新建时,默认的表单名的字符串数组。
     * @return true 读取或创建且读取(初始化空白文件)成功;false 创建失败;
     * @throws IOException
     */
    public boolean readOrCreate(String fileDirectory, String[] sheetNames) {
        boolean result = true;
        InputOutput io = new InputOutput();
        result = io.checkIfFileExist(fileDirectory);
        if (!result) {
            if (!create(fileDirectory, sheetNames)) {
                return false;
            }
        }
        read(fileDirectory);
        return result;
    }

    /**
     * 读取文件,如果文件不存在则创建并读取。
     *
     * @param fileDirectory
     *            文件地址(包含文件名)
     * @return true 读取或创建且读取(初始化空白文件)成功;false 创建失败;
     */
    public boolean readOrCreate(String fileDirectory) {
        return readOrCreate(fileDirectory, new String[0]);
    }

    /**
     * 读取文件,如果文件不存在则创建并读取。
     *
     * @param fileLocation
     *            文件路径
     * @param fileName
     *            文件名
     * @param sheetNames
     *            电子表格被新建时,默认的表单名的字符串数组。
     * @return true 读取或创建且读取(初始化空白文件)成功;false 创建失败;
     */
    public boolean readOrCreate(String fileLocation, String fileName,
            String[] sheetNames) {
        if (readOrCreate(fileLocation + fileName, sheetNames)) {
            set_fileLocation(fileLocation);
            set_fileName(fileName);
            return true;
        } else {
            return false;
        }
    }

    /**
     * 读取文件,如果文件不存在则创建并读取。
     *
     * @param fileLocation
     *            文件路径
     * @param fileName
     *            文件名
     * @return true 读取或创建且读取(初始化空白文件)成功;false 创建失败;
     * @throws IOException
     */
    public boolean readOrCreate(String fileLocation, String fileName) {
        return readOrCreate(fileLocation, fileName, new String[0]);
    }

    /**
     * 根据微软办公软件的电子表格个版本的行列大小限制对指定行列进行检查,看是否超范围;
     *
     * @param rowIndex
     *            单元格所在行数
     * @param colIndex
     *            单元格所在列数
     * @return true 没有超出范围; false 超出范围;
     */
    protected boolean checkWithOfficeExcelSheetLimit(int rowIndex, int colIndex) {
        // if past the Row/Column number limit; return false;
        // 在 Excel 2007 中,工作表大小为 16,384 列、1,048,576 行,但是早期版本 Excel 的工作表大小只有 256
        // 列、65,536 行。在早期版本的 Excel 中,超出此列和行限制的单元格中的数据将会丢失。
        String fileName = get_fileName();
        String fileType = fileName.substring(fileName.lastIndexOf("."));
        if ((fileType == "xls" || fileType == "xlt" || fileType == "xla" || fileType == "xml")
                && (rowIndex > 65536 || colIndex > 256)) {
            return false;
        }
        if ((fileType == "xlsx" || fileType == "xlsm" || fileType == "xlsb"
                || fileType == "xltx" || fileType == "xltm" || fileType == "xlam")
                && (rowIndex > 1048576 || colIndex > 16384)) {
            return false;
        }
        return true;
    }

    /**
     * 获取指定格的值,返回的字符串中以6字节获取状态标签开头。
     *
     * @param sheetIndex
     *            表单索引值,从0开始
     * @param rowIndex
     *            表单行的索引值,从0开始
     * @param colIndex
     *            表单列的索引值,从0开始
     * @return String字符串,以false: 开头的字符串是报错信息,以true:
     *         开头的字符串是宽松型返回值(本来指定格被程序视作未创建的,但表单存在);开头为true
     *         的为指定单元格内容。最前面的标识字段长为6字节。
     */
    public String getCellValueWithTag(int sheetIndex, int rowIndex, int colIndex) {
        HSSFWorkbook wb = get_workbook();
        if (wb == null) {
            return "false: haven't read the file.";
        }
        if (!checkWithOfficeExcelSheetLimit(rowIndex, colIndex)) {
            return "false: cell is out of limit";
        }
        String sheetName = wb.getSheetName(sheetIndex);
        HSSFSheet sheet = wb.getSheet(sheetName);// wb.getSheetAt(_sheetIndex);
        if (sheet == null) {
            return "false: the sheet is not exist.";// 默认情况下建立电子表格时,会建立3个表单
        }
        HSSFRow row = sheet.getRow(rowIndex);
        if (row == null) {
            return "true: ";// "false: the row is not exist.";//
                            // 为空的行也会被视为未建立。既然表单存在,那么按照用户习惯,就称其为空值吧。
        }
        HSSFCell cell = row.getCell((short) colIndex);
        if (cell == null) {
            return "true: ";// "false: the column is not exist.";//
                            // 为空的列也会被视为未创建。既然表单存在,行也存在,那么按照用户习惯,就称其为空值吧。
        }
        String cellValue = "";
        int cellType = cell.getCellType();// 0:numeric; 1:string; 2:formula;
                                            // 3:blank; 4:boolean; 5:error
        switch (cellType) {
        case 0:
            cellValue = String.valueOf(cell.getNumericCellValue());
            break;
        case 1:
            cellValue = cell.getRichStringCellValue().toString();
            break;
        case 2:
            cellValue = cell.getCellFormula();
            break;
        case 3:
            cellValue = "";
            break;
        case 4:
            cellValue = String.valueOf(cell.getBooleanCellValue());
            break;
        case 5:
            return "false: CELL_TYPE_ERROR";
        default:
            return "false: default";
        }
        return "true  " + cellValue;
    }

    /**
     * 从用户的角度看,指定的单元格应该存在。
     *
     * @param sheetIndex
     *            表单索引值 ,从0开始
     * @param rowIndex
     *            表单行的索引值,从0开始
     * @param colIndex
     *            表单列的索引值 ,从0开始
     * @return true 单元格所在表单存在,故应该存在,即便程序认为未被创建。false 单元格所在的表单都不存在。
     */
    public boolean ifCellIsSupposed2BExist(int sheetIndex, int rowIndex,
            int colIndex) {
        boolean result = true;
        HSSFWorkbook wb = get_workbook();
        if (wb == null) {
            return false;
        }
        if (!checkWithOfficeExcelSheetLimit(rowIndex, colIndex)) {
            return false;
        }
        // if sheet is not created, return false;
        String sheetName = wb.getSheetName(sheetIndex);
        HSSFSheet sheet = wb.getSheet(sheetName);// wb.getSheetAt(_sheetIndex);
        if (sheet == null) {
            return false;// 默认情况下建立电子表格时,会建立3个表单
        }
        // if row is not created, return false;
        HSSFRow row = sheet.getRow(rowIndex);
        if (row == null) {
            return true;// "false: the row is not exist.";//
                        // 为空的行也会被视为未建立。既然表单存在,那么按照用户习惯,就称其为空值吧。
        }
        // if column is not created return false;
        HSSFCell cell = row.getCell((short) colIndex);
        if (cell == null) {
            return true;// "false: the column is not exist.";//
                        // 为空的列也会被视为未创建。既然表单存在,行也存在,那么按照用户习惯,就称其为空值吧。
        }
        return result;
    }

    /**
     * 获取指定单元格的值
     *
     * @param sheetIndex
     *            表单索引值,从0开始
     * @param rowIndex
     *            表单行的索引值,从0开始
     * @param colIndex
     *            表单列的索引值 ,从0开始
     * @return null 单元格不存在;String字符串 单元格取值
     */
    public String getCellValue(int sheetIndex, int rowIndex, int colIndex) {
        if (!ifCellIsSupposed2BExist(sheetIndex, rowIndex, colIndex)) {
            return null;
        }
        try {
            HSSFCell cell = get_workbook().getSheetAt(sheetIndex)
                    .getRow(rowIndex).getCell((short) colIndex);// get cell
            String cellValue = "";
            int cellType = cell.getCellType();// 0:numeric; 1:string; 2:formula;
                                                // 3:blank; 4:boolean; 5:error
            switch (cellType) {
            case 0:
                cellValue = String.valueOf(cell.getNumericCellValue());
                break;
            case 1:
                cellValue = cell.getRichStringCellValue().toString();
                break;
            case 2:
                cellValue = cell.getCellFormula();
                break;
            case 3:
                cellValue = "";
                break;
            case 4:
                cellValue = String.valueOf(cell.getBooleanCellValue());
                break;
            case 5:
                cellValue = String.valueOf(cell.getErrorCellValue());
                break;
            default:
                return null;
            }
            return cellValue;
        } catch (NullPointerException npe) {// the cell is already supposed to
                                            // be exist. so,here, the null mean
                                            // empty.
            return "";
        }
    }

    /**
     * 用于对于指定电子表格文件的指定表的指定行指定列对应的单元格,进行赋值。
     *
     * @param cellValue
     *            要对单元格赋值的内容
     * @param valueType
     *            单元格值的类型。0:numeric; 1:string; 2:formula; 3:blank; 4:boolean;
     *            5:error
     * @param fileLocation
     *            文件路径
     * @param fileName
     *            文件名称
     * @param sheetIndex
     *            表索引值
     * @param rowIndex
     *            行索引值
     * @param colIndex
     *            列索引值
     * @param sheetNames
     *            表的名称的字符串的数组
     * @return true 写入成功; false 写入失败
     */
    public boolean setCellValue(String cellValue, int cellType,
            String fileLocation, String fileName, int sheetIndex, int rowIndex,
            int colIndex, String[] sheetNames) {
        boolean result = true;
        // 检查cellType值
        if (cellType < CELL_TYPE_NUMERIC || cellType > CELL_TYPE_ERROR) {
            read();
            return false;
        }
        // check if file is exist or file and sheet can be created.
        if (!readOrCreate(fileLocation, fileName, sheetNames)) {
            // false 则此过程中未能读到电子表格
            return false;
        }
        try {
            HSSFSheet sheet = get_workbook().getSheetAt(sheetIndex);
            HSSFRow row = sheet.getRow(rowIndex);
            if (row == null) {
                System.out
                        .print("\nOh, that row is not exist; I'm going to create it;\n");
                row = sheet.createRow(rowIndex);
            }
            HSSFCell cell = row.getCell((short) colIndex);
            if (cell == null) {
                System.out
                        .print("\nOh, that cell is not exist; I'm going to create it;\n");
                cell = row.createCell((short) colIndex);
            }
            cell.setCellType(cellType);
            switch (cellType) {
            case CELL_TYPE_NUMERIC:
                cell.setCellValue(Integer.parseInt(cellValue));
                break;
            case CELL_TYPE_STRING:
                cell.setCellValue(new HSSFRichTextString(cellValue));
                break;
            case CELL_TYPE_FORMULA:
                cell.setCellFormula(cellValue);
                break;
            case CELL_TYPE_BLANK:
                cell.setCellValue(new HSSFRichTextString(null));
                break;
            case CELL_TYPE_BOOLEAN:
                cell.setCellValue(Boolean.valueOf(cellValue));
                break;
            case CELL_TYPE_ERROR:
                cell.setCellErrorValue(Byte.decode(cellValue));
                break;
            default:// 失败则将内存中的表数据返回原状态,注意,read()返回原状态,最稳妥的方式,只是效率可能相对较低。而set_workbook(get_originalWorkbook()),对内存要求较高。
                read();
                return false;
            }
            // Write the output to a file
            FileOutputStream fileOut = new FileOutputStream(get_fileDirectory());
            get_workbook().write(fileOut);
            fileOut.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            read();
            result = false;
        }
        return result;
    }

    /**
     * 获取指定单元格的文本内容
     *
     * @param sheetIndex
     *            表单索引值,从0开始
     * @param rowIndex
     *            表单行的索引值,从0开始
     * @param colIndex
     *            表单列的索引值 ,从0开始
     * @return null 单元格不存在;String字符串 单元格文本内容
     */
    @Deprecated
    // POI 3.0.1 不支持FORMULA类型的单元格的文本获取。POI 3.7中能够支持
    public String getCellText(int sheetIndex, int rowIndex, int colIndex) {
        if (!ifCellIsSupposed2BExist(sheetIndex, rowIndex, colIndex)) {
            return null;
        }
        try {
            HSSFCell cell = get_workbook().getSheetAt(sheetIndex)
                    .getRow(rowIndex).getCell((short) colIndex);// get cell
            String cellValue = "";
            int cellType = cell.getCellType();// 0:numeric; 1:string; 2:formula;
                                                // 3:blank; 4:boolean; 5:error
            switch (cellType) {
            case CELL_TYPE_NUMERIC:
                cellValue = String.valueOf(cell.getNumericCellValue());
                break;
            case CELL_TYPE_STRING:
                cellValue = cell.getRichStringCellValue().toString();
                break;
            case CELL_TYPE_FORMULA:
                cellValue = cell.getCellFormula();
                break;
            case CELL_TYPE_BLANK:
                cellValue = "";
                break;
            case CELL_TYPE_BOOLEAN:
                cellValue = String.valueOf(cell.getBooleanCellValue());
                break;
            case CELL_TYPE_ERROR:
                cellValue = String.valueOf(cell.getErrorCellValue());
                break;
            default:
                return null;
            }
            return cellValue;
        } catch (NullPointerException npe) {// the cell is already supposed to
                                            // be exist. so,here, the null mean
                                            // empty.
            return "";
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Excel excel = new Excel();
        // excel.read("c:/Workbook.xls");
        // System.out.println(excel.getCellValueWithTag(0, 3, 3).substring(0));
        System.out.println(excel.setCellValue(
                "jfejagoihjreogjoeijroiireojfoqijfe", Excel.CELL_TYPE_STRING,
                "c:/", "Workbook.xls", 0, 5, 3,
                new String[] { "哈", "哈哈", "哈哈哈" }));
        System.out.println(excel.getCellValue(0, 5, 2).toString());
        System.out.println(excel.setCellValue(excel.getCellValue(0, 5, 2)
                .toString(), Excel.CELL_TYPE_FORMULA, "c:/", "Workbook.xls", 0,
                5, 5, new String[] { "ha", "0", "啊" }));
    }
}


希望对大家有所帮助。

了解更多关于POI的知识:

Apache POI - the Java API for Microsoft Documents

http://poi.apache.org/
computerScience推荐阅读:
  评论这张
 
阅读(1615)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017