Show pageBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Apache POI Check if File Contains Macros ====== This code should work for all office file. In this code, we test the file 1.doc in the project root directory. Requirement: POI 3.15 or above. <code> import org.apache.poi.poifs.macros.VBAMacroReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Map; public class Main { private static boolean hasVBA(InputStream inputStream) throws IOException { boolean returnVal = false; VBAMacroReader vbaMacroReader = null; try { vbaMacroReader = new VBAMacroReader(inputStream); Map<String, String> map = vbaMacroReader.readMacros(); returnVal = true; } catch (IOException e) { if (!e.getMessage().equals("No VBA project found")) { throw e; } } finally { if (vbaMacroReader != null) { vbaMacroReader.close(); } } return returnVal; } public static void main(String[] args) throws Exception { File file = new File("./1.doc"); InputStream inputStream = new FileInputStream(file); if (hasVBA(inputStream)) { System.out.println("This file has VBA"); } else { System.out.println("Нет VBA"); } inputStream.close(); } } </code> java/apache_poi_check_if_file_contains_macros.txt Last modified: 2019/02/14 12:32by chongtin