纯前端 根据目录解析word,拆分不同段落

9a69fede8b2044a79dd834e3e48f20b4.png前期回顾f8e3cc1a0f694ac2b665ca2ad14c49d7.png  

两分钟学会 制作自己的浏览器 —— 并将 ChatGPT 接入_0.活在风浪里的博客-CSDN博客自定义浏览器,并集合ChatGPT,源码已公开https://blog.csdn.net/m0_57904695/article/details/130467253?spm=1001.2014.3001.5501

👍 本文专栏:项目难点 

目录

🔖  前言: 

🚀  图例:

🎉  前端根据目录解析word:

💊  解析前的word格式如下:

📪   结语:


🔖  前言: 

       最近呐在做一个Ai工具,解析数据出境报告,

       在数据出境强合规的大背景下,任何企业在处理数据出境时,必须先向监管方提供一个详细的合规报告。这个报告含有大量的具体信息,因此整体的报告篇幅一般都会在150页以上。这对监管方所需的评审时间来说也是一个不小的负担。基于这些我们希望能给监管单位提供一个工具,能够将一份全量的数据出境合规申请报告浓缩成一份摘要,并同时提供摘要中引用的文字的出处。细节如:评论修改Ai问答。。。

      本次分享技术方案为,纯前端解析 word 文档,并根据目录拆分不同段落文字,传至后台,进行模型训练及提取摘要!这些暂时搁笔不提,待后再说,先实现 word 的解析

🚀  图例:

🎉  前端根据目录解析word:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>前端根据目录解析word,拆分不同段落</title>
    <script src="https://cdn.bootcss.com/mammoth/1.4.8/mammoth.browser.js"></script>
  </head>

  <body>
    <div class="container">
      <!-- 获取word段落文字 -->
      <button id="btn">获取txt</button>
      <!-- 上传 -->
      <input id="inp" type="file" />
      <!-- 展示word -->
      <div id="output"></div>
    </div>

    <script>
      const btn = document.querySelector("#btn");
      const inp = document.querySelector("#inp");
      const output = document.querySelector("#output");
      let html;

      btn.addEventListener("click", handleClick);
      inp.addEventListener("change", handleChange);

      function handleClick() {
        const arr = html?.split(/<h[1-6]>/g)?.slice(1);
        arr?.forEach((item) => {
          const [title, content] = item?.split("</h");
          const strippedTitle = title?.replace(/<[^>]+>/g, "");
          const strippedContent = content?.replace(/1>|<[^>]+>/g, "");
          const paragraph = `<div><strong>标题:</strong> ${strippedTitle}</div><div><strong>段落:</strong> ${strippedContent}</div>`;
          /* 
          insertAdjacentHTML()方法可以将指定的HTML字符串插入到指定元素的相对位置。具体参数含义如下:
          第一个参数:表示插入位置,共有四个值可选:
              'beforebegin':在当前元素之前插入。
              'afterbegin':在当前元素内部的第一个子元素之前插入。
              'beforeend':在当前元素内部的最后一个子元素之后插入。
              'afterend':在当前元素之后插入。
          第二个参数:表示要插入的HTML字符串。
          以下代码中,output.insertAdjacentHTML("beforeend", paragraph)
          表示将paragraph这段HTML字符串插入到output元素内部的最后一个子元素之后的位置。
          */
          output.insertAdjacentHTML("beforeend", paragraph);
          // 使用 innerHTML 属性的时候要非常小心,因为它会覆盖整个元素的 HTML 内容,包括已有的子元素和绑定的事件处理程序等。
          // 如果不小心操作,可能会导致意外的结果或安全问题。因此,建议使用 insertAdjacentHTML() 或其他更安全的方法来操作 DOM 元素。
          // output.innerHTML += paragraph;

          window.scrollTo({
            top: document.body.scrollHeight,
            behavior: "smooth",
          });
        });
      }

      function handleChange(event) {
        const file = event.target.files[0];
        const reader = new FileReader();
        reader.onload = handleLoad;
        reader.readAsArrayBuffer(file);
      }

      function handleLoad(loadEvent) {
        const arrayBuffer = loadEvent.target.result; // arrayBuffer
        mammoth.convertToHtml({ arrayBuffer }).then(handleConversion);
      }

      function handleConversion(result) {
        html = result.value;
        console.log(html);
        const newHTML = html.replace(
          /<(table|tr|td)>/g,
          '<$1 style="border-collapse: collapse; border: 1px solid rgb(204, 204, 204); padding: 8px 15px; color:#555555;">'
        );
        output.innerHTML = newHTML;
      }
    </script>
  </body>
</html>

💊  解析前的word格式如下:

📪   结语:

以下是之前写的一些纯前端的文件的实现

JavaScript 《公司开发功能》 99+ 大合集_0.活在风浪里的博客-CSDN博客

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: POI是一个用于处理Microsoft Office文件的Java库。它提供了许多功能,其中包括对Word文件的处理。POI库可以根据分割符对Word进行拆分。 首先,我们需要导入POI库的相关类和方法,并加载需要处理的Word文件。接下来,我们可以使用POI库提供的方法来读取Word文件的内容。 在读取内容时,可以使用分割符将Word文件中的文本进行拆分。分割符可以是任何字符或字符串,如空格、逗号、句号等。我们可以使用POI库提供的分割符处理方法将文本进行拆分,并将拆分后的文本存储到一个数组或列表中。 以下是一个示例代码段,展示了如何使用POI库来根据分割符对Word进行拆分: ``` import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class WordSplitter { public static void main(String[] args) { try { // 加载Word文件 FileInputStream file = new FileInputStream("path/to/word/file.docx"); XWPFDocument document = new XWPFDocument(file); // 存储拆分后的文本 List<String> words = new ArrayList<>(); // 遍历Word文件的段落 for (XWPFParagraph paragraph : document.getParagraphs()) { // 获取段落中的文本 for (XWPFRun run : paragraph.getRuns()) { String text = run.getText(0); // 根据分割符拆分文本 String[] splitWords = text.split(" "); // 将拆分后的词语存储到列表中 for (String word : splitWords) { words.add(word); } } } // 打印拆分结果 for (String word : words) { System.out.println(word); } // 关闭文件 file.close(); } catch (IOException | InvalidFormatException e) { e.printStackTrace(); } } } ``` 这个示例代码展示了如何使用POI库来拆分Word文件中的文本。我们首先加载Word文件并创建一个XWPFDocument对象。然后,我们遍历Word文件的段落,获取段落中的文本,并使用指定的分割符进行拆分拆分后的词语存储在一个列表中,并最后打印出来。 总结来说,POI库可以很方便地对Word文件进行处理,并通过使用指定的分割符来拆分文本。这对于需要处理Word文件中的内容时十分有用,如提取关键词、统计词频等。 ### 回答2: POI是一个用于操作Microsoft Office文档的Java库。它提供了许多功能,包括对Word文档的操作。 对于Word文档的拆分,POI可以根据分割符进行处理。分割符可以是任何用户定义的字符或字符串,用于将文本或内容分割成不同的部分。 在使用POI进行拆分操作时,我们可以先加载Word文档。接下来,可以通过获取文档的内容或特定段落来获取要进行拆分的文本。 一旦我们获取到要进行拆分的文本,我们可以使用分割符来将其拆分不同的部分。POI提供了相应的方法和类来实现这一操作。我们可以选择使用字符串的split()方法或使用POI提供的工具类来实现拆分。 例如,我们可以使用StringUtils类中的split方法来进行拆分。这需要引入POI的相关包,并使用类似下面的代码: ``` String[] parts = StringUtils.split(text, 分割符); ``` 在上面的代码中,text是我们要进行拆分的文本,而"分割符"是我们指定的分割符号。拆分后,我们可以访问parts数组来获取拆分后的部分。 这样,我们就可以根据分割符使用POI对Word文档进行拆分操作。无论是根据空格、逗号、换行符还是其他字符作为分割符,POI都提供了相应的方法和类来实现拆分操作,使得对Word文档的内容进行拆分变得简便和灵活。 ### 回答3: POI是一款功能强大的Java库,可以用于处理Microsoft Office文件,包括Word文档。在POI中,可以使用分隔符对Word文档进行拆分操作。 拆分Word文档的过程如下:首先,我们需要导入POI库,并创建一个Word文档的输入流。然后,可以使用POI的XWPFDocument类来读取文档内容,并将其存储到一个字符串中。接下来,我们可以使用特定的分隔符对字符串进行拆分。 例如,假设我们有一个Word文档,其中包含一些文本内容,每个段落以换行符"\n"分隔。我们可以使用如下代码来拆分文档: ```java import org.apache.poi.xwpf.usermodel.XWPFDocument; import java.io.File; import java.io.FileInputStream; import java.util.Scanner; public class WordSplitter { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream(new File("example.docx")); XWPFDocument document = new XWPFDocument(fis); StringBuilder sb = new StringBuilder(); // 将文档内容存储到字符串中 for (XWPFParagraph paragraph : document.getParagraphs()) { sb.append(paragraph.getText()); sb.append("\n"); // 段落之间使用换行符分隔 } // 使用换行符对字符串进行拆分 String[] paragraphs = sb.toString().split("\n"); // 输出拆分后的段落 for (String paragraph : paragraphs) { System.out.println(paragraph); } // 关闭文件流 fis.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码会将文档内容读取到一个StringBuilder对象中,并使用换行符对字符串进行拆分。然后,可以通过遍历拆分后的段落数组,对每个段落进行进一步的处理或输出。 注意,这只是一个简单的示例,在实际使用中可能需要根据具体情况进行适当的修改。希望对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彩色之外

你的打赏是我创作的氮气加速动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值