小编FMR*_*FMR的帖子

Open XML - 在文档模板中查找和替换多个占位符

我知道有很多关于这个主题的帖子,但似乎没有一个处理这个特定问题。我正在尝试制作一个小型通用文档生成器 POC。我正在使用 Open XML。

代码是这样的:

   private static void ReplacePlaceholders<T>(string templateDocumentPath, T templateObject)
        where T : class
    {

        using (var templateDocument = WordprocessingDocument.Open(templateDocumentPath, true))
        {
            string templateDocumentText = null;
            using (var streamReader = new StreamReader(templateDocument.MainDocumentPart.GetStream()))
            {
                templateDocumentText = streamReader.ReadToEnd();
            }

            var props = templateObject.GetType().GetProperties();
            foreach (var prop in props)
            {
                var regexText = new Regex($"{prop.Name}");
                templateDocumentText =
                    regexText.Replace(templateDocumentText, prop.GetValue(templateObject).ToString());
            }

            using var streamWriter = new StreamWriter(templateDocument.MainDocumentPart.GetStream(FileMode.Create));
                streamWriter.Write(templateDocumentText);
        }
    }
Run Code Online (Sandbox Code Playgroud)

该代码按预期工作。 问题如下:

在此处输入图片说明

StreamReader.ReadToEnd()在标签之间拆分我的占位符,因此我的 Replace 方法替换不会拆分的单词。

在这种情况下,我的代码将搜索单词“Firstname”,但会找到“irstname”,因此不会替换它。

有没有办法逐字扫描整个 .docx …

c# ms-word openxml openxml-sdk

3
推荐指数
1
解决办法
3047
查看次数

在 Material-Table 渲染属性中使用函数

我需要在材质表列渲染属性中使用自定义函数。该函数被调用,我在控制台上打印了预期的结果,但是,结果根本不会在表中呈现。这是代码:

import React from 'react';
import HraReferenceDataContext from '../context/hraReferenceData/hraReferenceDataContext';
import MaterialTable from 'material-table';

const EmployeeDetailsCompanyDocuments = ({ companyDocumentsData }) => {
    const hraReferenceDataContext = React.useContext(HraReferenceDataContext);
    const { companyDocumentTypes } = hraReferenceDataContext;

    const getDocumentTypeForRow = id => {
        companyDocumentTypes.forEach(type => {
            if (type.id === id) {
                console.log(type.name)
                return type.name;
            }
        });
    };

    const columnInfo = [
        {
            field: 'typeId',
            title: 'Type',
            render: rowData =>{ getDocumentTypeForRow(rowData.typeId)}, //here is the problem
        },
        { field: 'created', title: 'Created On' },

    ];

    return (
              <MaterialTable …
Run Code Online (Sandbox Code Playgroud)

reactjs material-ui material-table

2
推荐指数
1
解决办法
7770
查看次数

第2739章

我正在尝试使用 Axios 和 Typescript 在 React 应用程序中编写 API 服务。

这是我的代码:

interface Service<T> {
  GetAll?: Promise<AxiosResponse<T>>;
}
interface Example {
  id: Number;
}

const ApiService2 = () => {
  const Example = (): Service<Example> => {
    const GetAll = (): Promise<AxiosResponse<Example[]>> => {
      return axios.get<Example[]>("urlhere");
    };
    return {
      GetAll
    };
  };
};
Run Code Online (Sandbox Code Playgroud)

这是我的完整错误:

Type '() => Promise<AxiosResponse<Example[]>>' is missing the following properties from type 'Promise<AxiosResponse<Example>>': then, catch, [Symbol.toStringTag], finally  TS2739
Run Code Online (Sandbox Code Playgroud)

typescript reactjs axios

1
推荐指数
1
解决办法
9456
查看次数