[英]Apache POI: Get value from textbox
我目前正在編寫從Excel文件讀取值的程序。 對於普通的單元格,它工作正常,但也有文本框,選擇框和組合框,我無法真正訪問。 我知道,這些元素是使用ID創建的。
這是我目前的嘗試:
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;
}
}
}
我知道有一個解決方案( 從Java的Excel中獲取文本框值 ),但是像OP一樣,我沒有任何HSSFTextbox實例,而只有HSSFObjectData。 我的問題是,我可以從這些HSSFObjectDatas中提取鍵入文本框中的值嗎?
謝謝!
復活一個老問題,但是我有一個類,它從命名的textBox讀取Excel Textbox String內容。 以下是相關部分的摘錄。 請注意,“。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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.