Suche in Exceldateien mit jacob

mki_germo

Erfahrenes Mitglied
Hallo,

ich bastel gerade an einer Anwendung, in der man unter Anderem Word und Excel-Dateien auf einen bestimmten Text durchsucht. Ich nutze dazu jacob. Unter Word funktioniert das auch ganz hervorragend, allerdings bekomme ich das unter Excel irgendwie nicht hin.

Unter Word nutze ich dazu folgende Methode:

Code:
/**
	 * Suche in Word
	 * @param application Application-Objekt
	 * @return
	 */
	private boolean searchWordFile(Dispatch application) {
		Dispatch document = Dispatch.get(application, "ActiveDocument").toDispatch();
		Dispatch selectionObj = this.word.getProperty("Selection").toDispatch();
		Dispatch findObj = Dispatch.call(selectionObj, "Find").toDispatch();
		Dispatch replacementObj = Dispatch.call(findObj, "Replacement")
				.toDispatch();
		Dispatch.call(replacementObj, "ClearFormatting");

		Variant findText = new Variant(this.so.getMatchWord());
		Variant replaceWith = new Variant("");
		Variant format = FALSE;
		Variant matchCase = FALSE;
		Variant matchWholeWord = FALSE;
		Variant matchWildcards = FALSE;
		Variant matchSoundsLike = FALSE;
		Variant matchAllWordForms = FALSE;
		Variant forward = TRUE;
		if (this.so.isCaseSensitive()) {
			matchCase = TRUE;
		}
		if (this.so.isMatchWholeWord()) {
			matchWholeWord = TRUE;
		}
		Variant wrap = new Variant(1);
		Variant replace = new Variant(0);

		Variant result = Dispatch.callN(findObj, "Execute", new Variant[] {findText,
				matchCase, matchWholeWord, matchWildcards, matchSoundsLike,
				matchAllWordForms, forward, wrap, format, replaceWith,
				replace });
		Dispatch.call(document, "Close", FALSE);
		return result.getBoolean();
	}

Für Excel nutze ich folgende Methode:

Code:
/**
	 * Suche in Excel
	 * @param workbook Aktuelles Workbook
	 */
	private void searchInXls(Dispatch workbook) {
		Dispatch selectionObj = this.excel.getProperty("Cells").toDispatch();
		Dispatch findObj = Dispatch.call(selectionObj, "Find", FALSE).toDispatch();
		Variant findText = new Variant(this.so.getMatchWord());
		Variant replaceWith = new Variant("");
		Variant format = FALSE;
		Variant matchCase = FALSE;
		Variant matchWholeWord = FALSE;
		Variant matchWildcards = FALSE;
		Variant matchSoundsLike = FALSE;
		Variant matchAllWordForms = FALSE;
		Variant forward = TRUE;
		if (this.so.isCaseSensitive()) {
			matchCase = TRUE;
		}
		if (this.so.isMatchWholeWord()) {
			matchWholeWord = TRUE;
		}
		Variant wrap = new Variant(1);
		Variant replace = new Variant(0);

		Variant result = Dispatch.callN(findObj, "Execute", new Variant[] {findText,
				matchCase, matchWholeWord, matchWildcards, matchSoundsLike,
				matchAllWordForms, forward, wrap, format, replaceWith,
				replace });
		System.out.println(result);
		

	}

Das Problem: in der Excel-Suche ist result immer null - in der Word-Suche bekomme ich einen Boolean.
Hat jemand sowas in der Art schoneinmal gemacht oder hat jemad eine Idee, was ich genau falsch mache?


Gruss, Manuel
 
Zurück