Я использую OLE-автоматизацию из Java для доступа к методам для слова.
Мне удалось сделать следующее с помощью автоматизации OLE:
Открыть файл шаблона документа Word.
Почта объединить шаблон документа Word с файлом источника данных CSV.
Сохранить файл слияния в файл нового документа Word.
Теперь мне нужно открыть объединенный файл почты, а затем с помощью OLE программно разделить его на несколько файлов. Это означает, что если исходный файл с объединенной почтой имеет 6000 страниц, а для моего свойства макс. Страниц на файл установлено значение 3000 страниц, мне нужно создать два новых файла документов Word и поместить первые 3000 страниц на одной и последние 3000 страниц на другую.
В моих первых попытках я взял количество строк в CSV-файле и умножил его на количество страниц в шаблоне, чтобы получить общее количество страниц после его объединения. Затем я использовал объединение для создания нескольких файлов. Проблема, однако, в том, что я не могу точно рассчитать, сколько страниц будет объединенным документом, потому что в некоторых случаях все, скажем, 9 страниц шаблона не будут использоваться из-за данных и используемых полей слияния. Таким образом, в некоторых случаях одна строка будет создавать только 3 страницы (используя шаблон из 9 страниц), а другие могут создавать 9 страниц (используя шаблон из 9 страниц) во время слияния.
Таким образом, единственное решение состоит в том, чтобы объединить все строки в один документ, а затем разделить его на несколько документов, чтобы убедиться, что точное количество страниц, например свойство 3000 страниц, действительно присутствует в каждом файле, пока не останется больше страниц от исходный объединенный файл.
Я уже несколько раз пробовал использовать сайт msdn для получения методов, их свойств и т. Д., Но не смог этого сделать.
На моих последних попытках теперь я пытался использовать GoTo, чтобы добраться до определенного номера страницы и удалить страницу. Я собирался попробовать сделать это один за другим для каждой страницы, пока не доберусь до того места, откуда я хочу, чтобы файл начинался, и затем сохранить его как новый файл, но также не смог сделать это.
Пожалуйста, кто-нибудь может предложить что-то, что может мне помочь?
Спасибо и С уважением
Шон
Ниже приведен пример открытия файла слова с помощью OLE AUTOMATION из 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