[英]How to extract formula from excel cell in java to identify cmd functions?
以下是問題的簡要說明。
我正在識別具有 CMD 功能的 excel 文件,例如用於安全過濾的“=cmd|'/C calc'!A0”。 我們目前必須使用 Java 來解析這些文件。
我使用了以下兩種方法:
有沒有人對我如何解決這個問題有一些建議? 這真的很有幫助。
謝謝你。
我確實找到了一個精心設計的解決方案,我使用上面鏈接的 stackoverflow .. 它處理 XSSF 和 HSSF。
if (workbook instanceof XSSFWorkbook) {
XSSFWorkbook xssfWorkbook = (XSSFWorkbook) workbook;
List<ExternalLinksTable> externalLinks = xssfWorkbook.getExternalLinksTable();
for (ExternalLinksTable linksTable : externalLinks) {
if (linksTable.getCTExternalLink().isSetDdeLink()) {
return false;
}
}
} else {
HSSFWorkbook hssfWorkbook = (HSSFWorkbook) workbook;
Set<String> references = getWorkbookReferences(hssfWorkbook);
if (containsStartsWithSubString(references, "cmd")) {
return false;
}
}
private Set<String> getWorkbookReferences (HSSFWorkbook wb)
{
Set<String> references = new HashSet<>();
InternalWorkbook internalWorkbook = wb.getInternalWorkbook();
int extSheetIdx = 0;
while (internalWorkbook.getExternalSheet(extSheetIdx) != null) {
EvaluationWorkbook.ExternalSheet extSheet =
internalWorkbook.getExternalSheet(extSheetIdx++);
references.add(extSheet.getWorkbookName());
// fail safe.
if (extSheetIdx > maxExterLinks) {
return references;
}
}
return references;
}
歡迎任何建議!
不幸的是,我仍在研究如何識別 Word 文檔:)
如果單元格中有如下公式,則無法獲取單元格的完整字符串
SUM(1+1)*cmd|' /C calc'!A0
當我使用myCell.getCellFormula()
,結果是SUM(1+1)*A1
這不是預期的結果。
我想阻止 =cmd| 或 cmd| 如果在工作表的特定單元格中找到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.