static void Main(string[] args) { Thread.CurrentThread.CurrentUICulture = new CultureInfo("en"); if (CultureInfo.InstalledUICulture.TwoLetterISOLanguageName == "ja") { Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja"); } //Definition of application command arguments var app = new CommandLineApplication(throwOnUnexpectedArg: false); app.Name = "OfficeExtractText.exe"; app.Description = Resource.APP_DESCRIPTION; var targetPathArgument = app.Argument("<target file or directory>", Resource.TARGET_PATH_ARGUMENT); var outputOption = app.Option("-o|--output", Resource.OUTPUT_OPTION, CommandOptionType.SingleValue); var subDirOption = app.Option("-s|--subdir", Resource.SUBDIR_OPTION, CommandOptionType.NoValue); var excelOption = app.Option("-e|--excel", Resource.EXCEL_OPTION, CommandOptionType.NoValue); var wordOption = app.Option("-w|--word", Resource.WORD_OPTION, CommandOptionType.NoValue); var powerPointOption = app.Option("-p|--powerpoint", Resource.POWERPOINT_OPTION, CommandOptionType.NoValue); var nologOption = app.Option("--no-log", Resource.NOLOG_OPTION, CommandOptionType.NoValue); app.OnExecute(() => { //Options setting. if (targetPathArgument.Value == null || !outputOption.HasValue()) { app.ShowHelp(); return(3); } //Init logger. ConsoleLogger.InitLogger(!nologOption.HasValue(), !nologOption.HasValue(), true); //Init options. var extractExcel = excelOption.HasValue(); var extractWord = wordOption.HasValue(); var extractPowerPoint = powerPointOption.HasValue(); if (!extractExcel && !extractWord && !extractPowerPoint) { extractExcel = true; extractWord = true; extractPowerPoint = true; } var options = new OfficeTextExporterOption(); options.ExtractExcel = extractExcel; options.ExtractWord = extractWord; options.ExtractPowerPoint = extractPowerPoint; options.ExtractSubDir = subDirOption.HasValue(); options.OutputDir = Path.GetFullPath(outputOption.Value()); try { //Execute exporter. var targetPath = Path.GetFullPath(targetPathArgument.Value); ConsoleLogger.WriteLog(String.Format(Resource.EXTRACTING_STARTED_PATH_ARG0, targetPath)); var exporter = new OfficeTextExporter(targetPath, options); exporter.Execute(); if (exporter.HasWarning()) { ConsoleLogger.WriteLog(Resource.EXTRACTING_FINISHED_WITH_WARNING); return(2); } else { ConsoleLogger.WriteLog(Resource.EXTRACTING_FINISHED_SUCCESSFULLY); return(0); } } catch (ApplicationException e) { ConsoleLogger.WriteError(String.Format(Resource.EXTRACTING_FINISHED_WITH_ERROR_DETAILS_ARG0, e.Message)); return(1); } catch (Exception e) { ConsoleLogger.WriteError(String.Format(Resource.EXTRACTING_FINISHED_WITH_ERROR_DETAILS_ARG0, e.ToString())); return(1); } }); try { app.Execute(args); } catch (CommandParsingException) { app.ShowHelp(); Environment.Exit(2); } }
internal void Execute() { //Check target files. var files = GetTargetFiles(); if (files.Count == 0) { throw new ApplicationException(String.Format(Resource.NO_TARGET_FOUND)); } //Init excel, word, powerpoint. using (var excel = new ComWrapper <Excel.Application>(new Excel.Application() { Visible = false, DisplayAlerts = false })) using (var books = new ComWrapper <Excel.Workbooks>(excel.ComObject.Workbooks)) using (var word = new ComWrapper <Word.Application>(new Word.Application() { Visible = false, DisplayAlerts = Word.WdAlertLevel.wdAlertsNone })) using (var docs = new ComWrapper <Word.Documents>(word.ComObject.Documents)) using (var powerPoint = new ComWrapper <PowerPoint.Application>(new PowerPoint.Application() { DisplayAlerts = PowerPoint.PpAlertLevel.ppAlertsNone })) using (var ppts = new ComWrapper <PowerPoint.Presentations>(powerPoint.ComObject.Presentations)) { try { foreach (var file in files) { try { ConsoleLogger.WriteLog(String.Format(Resource.EXTRACTING_TEXT_PATH_ARG0, file)); if (IsExcel(file)) { ExportExcel(file, books); } else if (IsWord(file)) { ExportWord(file, docs); } else if (IsPowerPoint(file)) { ExportPowerPoint(file, ppts); } } catch (COMException e) { ConsoleLogger.WriteWarning(String.Format(Resource.SKIPPED_EXTRACTING_TEXT_PATH_ARG0_DETAILS_ARG1, file, e.ToString())); this.hasWarning = true; } } } finally { try { books.ComObject.Close(); } catch (Exception e) { ConsoleLogger.WriteError(e.ToString()); } try { excel.ComObject.Quit(); } catch (Exception e) { ConsoleLogger.WriteError(e.ToString()); } //No need to close docs, because there is no opened file.(And an error occurrs when closing here.) try { word.ComObject.Quit(); } catch (Exception e) { ConsoleLogger.WriteError(e.ToString()); } try { powerPoint.ComObject.Quit(); } catch (Exception e) { ConsoleLogger.WriteError(e.ToString()); } } } }