Я использую автоматизацию OLE из java для доступа к методам слова.Разбиение текстового файла на несколько файлов меньшего размера с использованием OLE Automation из java
мне удалось сделать следующее с помощью автоматизации OLE:
Открыть слово шаблон документа файл. Слияние файла документа Word с файлом данных csv. Сохраните почтовый объединенный файл в новый файл документа Word.
Теперь мне нужно сделать так, чтобы открыть файл, объединенный с почтой, а затем с помощью OLE программно разделить его на несколько файлов. Значение, если исходный файл с объединенной почтой имеет 6000 страниц, а для моих максимальных страниц для свойства файла задано 3000 страниц, мне нужно создать два новых файла документа с надписью и поместить 1 000 000 страниц в одну и последние 3000 страниц в другую.
По моим первым попыткам я взял количество строк в файле csv и умножил его на количество страниц в шаблоне, чтобы получить общее количество страниц после его объединения. Затем я использовал слияние для создания нескольких файлов. Однако проблема заключается в том, что я не могу точно рассчитать, сколько страниц будет объединен документ, потому что в некоторых случаях все говорят, что 9 страниц шаблона не будут использоваться из-за данных и используемых полей mergefield. Поэтому в некоторых случаях одна строка будет создавать только 3 страницы (используя 9-страничный шаблон), а другие могут создавать 9 страниц (используя 9-страничный шаблон) во время времени слияния.
Таким образом, единственное решение состоит в том, чтобы объединить все строки в один документ, а затем разделить на несколько документов, чтобы гарантировать, что точное количество страниц, таких как свойство 3000 страниц, действительно находится в каждом файле, пока не осталось больше страниц оригинальный объединенный файл.
Я уже пробовал несколько вещей, используя сайт msdn для получения методов и их свойств и т. Д., Но не смог этого сделать.
В моих последних попытках теперь я пытаюсь использовать GoTo для доступа к определенному номеру страницы и удалению страницы. Я собирался попробовать сделать это по одному для каждой страницы, пока не доберусь до того места, где я хочу, чтобы файл начинался с него, а затем сохранял его как новый файл, но также не мог этого сделать.
Возможно, кто-нибудь предложит что-нибудь, что может мне помочь?
Спасибо и наилучшие пожелания Шон
Пример открыть файл слова, используя АВТОМАТИЗАЦИЮ OLE из Jave приведено ниже:
Code sample
OleAutomation documentsAutomation = this.getChildAutomation(this.wordAutomation, "Documents");
int [ ] id = documentsAutomation.getIDsOfNames(new String[]{"Open"});
Variant[] arguments = new Variant[1];
arguments[0] = new Variant(fileName); // where filename is the absolute path to the docx file
Variant invokeResult = documentsAutomation.invoke(id[0], arguments);
private OleAutomation getChildAutomation(OleAutomation automation, String childName) {
int[] id = automation.getIDsOfNames(new String[]{childName});
Variant pVarResult = automation.getProperty(id[0]);
return(pVarResult.getAutomation());
}
Code sample
Я забыл добавить, что для этой цели я использую следующую библиотеку, которая включена в версию Eclipse от Helios. org.eclipse.swt.win32.win32.x86_64_3.6.0-v3650b.jar –
Теперь мне удалось эффективно использовать метод Goto для перехода на определенные страницы, а затем удалить их, пока у меня не будет только страниц, которые мне нужны в документ, после которого я сохраняю его в новом документе. Это еще не идеально, но, по-видимому, это один из подходов, по крайней мере, к принятию. –
Просто последнее замечание, в котором я закончил одну пустую страницу в конце моих разделенных файлов, потому что шаблон, используемый для слияния почты, имеет разрыв страницы на последней странице. Чтобы удалить последнюю пустую страницу в файле, я не мог использовать Delete в объекте Range, потому что это просто удаляет содержимое, а не страницу. Обходной путь, который я обнаружил, - это использовать метод TypeBackspaceKey, как только вы использовали метод Goto, чтобы попасть на последнюю страницу. Это прекрасно удалило пустую страницу из документа с разделенным словом. –