Изучение мира надстроек Word. Хотите создать список абзацев и перейти к каждому, щелкнув по нему (какое-то содержание)
Как это:
Я создал код (на reactjs, но не важно, какой фреймворк использовать) Когда я нажимаю на любую кнопку, вызывается обратный вызов, в консоли нет ошибок, но навигация не происходит. Вопрос: Как я могу передать некоторые данные контекста между вызовами Word.run, чтобы добиться такого поведения?
import * as React from 'react'
import { useEffect, useState } from 'react'
const findAllParagraphs = async () => {
return Word.run(context => {
const contentControls = context.document.body.paragraphs.load('text')
return context
.sync()
.then(() => contentControls.items)
})
}
export const App = ({ isOfficeInitialized }) => {
const [paras, setParas] = useState<any[]>([])
useEffect(() => {
const loadParagraphs = async () => {
setParas(await findAllParagraphs())
}
if (isOfficeInitialized) {
loadParagraphs()
}
}, [isOfficeInitialized])
const navToPar = async (par: Word.Paragraph) => {
return await Word.run(async context => {
par.select()
return await context.sync()
})
}
const renderList = () => {
return paras.filter(({ text }) => !!text).map((par: Word.Paragraph, i) => {
return (
<div>
<button onClick = {() => navToPar(par)} key = {i}>
{par.text.substr(0, 30)}...
</button>
</div>
)
})
}
return (<div>{renderList()}</div>)
}
Потому что в итоге идея использовать не абзацы, а какие-то конкретные якоря/закладки
Вы можете использовать разделитель стилей, чтобы поместить два стиля абзаца в один и тот же логический абзац. addbalance.com/usersguide/styles.htm#Style_Separator
Нашел ответ на похожий вопрос Ответ: объекты нельзя использовать повторно, следуйте здесь, чтобы узнать больше
Пожалуйста, импортируйте этот фрагмент в Script Lab, чтобы вы могли запустить пример того, как вы можете решить проблему.
Приведенный фрагмент выполняет поиск в документе (он ищет текст «Word»), сохраняет каждый результат (диапазон) в массиве диапазонов («rangesAr») и показывает каждый из них как элемент в списке. Затем вы можете выбрать диапазон из списка и перейти к нему. Я думаю, вы можете сделать что-то подобное для абзацев.
Этот фрагмент делает все внутри одного Word.run, которого я пытался избежать, но обнаружил, что это невозможно. Так что ваш подход выглядит хорошо, спасибо
Чтобы добавить оглавление (TOC) в приложение React, вы можете выполнить следующие действия:
Установите библиотеку react-markdown, которая позволяет анализировать Markdown и отображать его как компоненты React:
npm install react-markdown
Импортируйте библиотеку react-markdown в свой компонент React:
Почему бы просто не использовать панель навигации в Word? --- addbalance.com/usersguide/styles.htm#Navigation_Pane -- addbalance.com/word/MovePages.htm