Apache POI: получить значение из текстового поля

В настоящее время я пишу программу, которая считывает значения из файла excel. Для нормальных ячеек он работает отлично, но есть также текстовые поля, selectboxes и comboboxes, к которым я не могу получить доступ. Я знаю, что эти элементы были созданы с идентификатором.

Вот моя текущая попытка:

private void processExcelToXml(File excelFile) throws EncryptedDocumentException, IOException {
        HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(excelFile));
    List<HSSFObjectData> embeddedObjects = workbook.getAllEmbeddedObjects();
    List<HSSFObjectData> textBoxList = new ArrayList<>();
    List<HSSFObjectData> comboBoxList = new ArrayList<>();
    List<HSSFObjectData> checkBoxList = new ArrayList<>();


    for (HSSFObjectData hssfObjectData : embeddedObjects) {
        log.info(hssfObjectData.getDirectory().getName());
        switch (hssfObjectData.getOLE2ClassName()) {

            case "Forms.TextBox.1":
                textBoxList.add(hssfObjectData);
                break;
            case "Forms.CheckBox.1":
                checkBoxList.add(hssfObjectData);
                break;
            case "Forms.ComboBox.1":
                comboBoxList.add(hssfObjectData);
                break;
            default:
                break;
        }
    }
}

Я знаю, что есть solutuion ( получить значение текстового поля из Excel в Java ), но, как и в OP, я не получаю никаких экземпляров HSSFTextbox, а только HSSFObjectData. Мой вопрос: могу ли я извлечь значение, введенное в текстовое поле из этих HSSFObjectDatas?

Спасибо!

java,apache-poi,

1

Ответов: 1


0

Воскрешение старого вопроса, но у меня есть класс, который читает содержимое текстовой строки Excel из имени textBox. Ниже приведена выдержка из соответствующих частей. Обратите внимание, что «.trim ()» важно, поскольку имя формы, похоже, добавлено учебным пространством. это вызвало у меня много проблем.

//Declarations
private HSSFWorkbook wb;
private HSSFWorkbook outputWb;
private HSSFSheet sheet;
private HSSFFont myFont;
private HSSFPatriarch pat;
private HSSFRichTextString str;
private List<HSSFShape> children;

//Constructor
try {
        NPOIFSFileSystem fs = new NPOIFSFileSystem(new File(IN_FILE_NAME));
        wb = new HSSFWorkbook(fs.getRoot(), true);
        sheet = wb.getSheet("Certificate");
        pat = (HSSFPatriarch) sheet.createDrawingPatriarch();
        children = pat.getChildren();

//Methods
private String getText(String textBoxName){
    return getRichText(textBoxName).toString().trim();
}

private  HSSFRichTextString getRichText(String textBoxName) {
    Iterator<HSSFShape> it = children.iterator();
    HSSFRichTextString returnString = null;
    while (it.hasNext()) {
        HSSFShape shape = it.next();
        if (shape.getShapeName().trim().equals(textBoxName)) {
            HSSFTextbox textbox = (HSSFTextbox) shape;
            returnString=textbox.getString();
        }
    }
    return returnString;
}
java, apache-poi,
Похожие вопросы