小编Wol*_*ahl的帖子

如何在带有POI的DOCX中使用预定义格式?

我正在使用POI创建一个docx生成器,并希望使用预定义的格式.

Word包括多种格式,如标题,标题1..10等.这些格式是在您使用Word创建的每个DOCX中预定义的.

我想在我的docx生成器中使用它们.我尝试了以下但是格式没有应用:

paragraph = document.createParagraph();
lastParagraph.setStyle("Heading1");
Run Code Online (Sandbox Code Playgroud)

我还尝试了"标题1","heading1"和"Heading1"作为样式,但它们都没有奏效.
API文档不显示任何信息.

我分析了用Word 2007创建的docx文件,发现"Heading1"是正确的.不幸的是,样式没有在docx中定义.我是否必须手动创建此样式?

谁能指出我正确的解决方案?

java docx apache-poi xwpf

14
推荐指数
3
解决办法
2万
查看次数

如何使用jaxb包装子列表

当试图映射客户 - >订单1:n关系与jaxb 2.2.6我想得到包含在单独节点"订单"中的订单列表.

目前的结果是:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <Customer>
       <id>100</id>
       <name>John Doe</name>
       <orders>
         <address>100 main street, smalltown, pa</address>
         <orderid>1100</orderid>
       </orders>
      <orders>
         <address>5 broadway, ny, ny</address>
         <orderid>1200</orderid>
       </orders> 
    </Customer>
Run Code Online (Sandbox Code Playgroud)

但我想得到:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <Customer>
       <id>100</id>
       <name>John Doe</name>
       <orders>
         <order>
           <address>100 main street, smalltown, pa</address>
           <orderid>1100</orderid>
         </order>
         <order>
            <address>5 broadway, ny, ny</address>
            <orderid>1200</orderid>
         </order>
       </orders> 
    </Customer>
Run Code Online (Sandbox Code Playgroud)

需要改变什么才能得到这个结果?

相关的源代码有:

  • 客户界面
  • CustomerJaxbDao实现
  • 订单界面
  • OrderJaxbDao实现
  • TestCustomerWrite Junit4 Testcase

并使用此jaxb实现:

            <!-- JAXB -->
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.2.6</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

客户界面:

/**
 * Copyright (C) 2011-2012 …
Run Code Online (Sandbox Code Playgroud)

java xml jaxb

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

开源拼写检查

正在评估为我拥有的产品添加拼写检查.根据我的研究,需要做出的主要决定:

  1. 要使用的库.
  2. 字典(这可以是特定地区,英国英语,美国等).
  3. 排除列表.每当检测到拼写错误时,可能不是拼写错误,而是用户特有的措辞.此时,用户应该能够将其
    添加到他的自定义排除列表中.
  4. 除了每用户自定义列表外,还有基于工具客户端的用户空间的排除列表.这是用户工作域中的术语/首字母缩略词.例如,FX不会成为货币交易者的拼写错误.

下面列出了我所提出的开放性问题,如果我可以获得非常有用的输入.1,我想的是hunspell,它是在MPL下提供的开源库,由firefox和OpenOffice系列产品使用.有没有使用这个恐怖故事?有许可证的灰色区域?拼写检查将在Windows客户端上进行.

字典可以从各种来源获得,有些是免费的,而有些则不是.关于免费词典的良好来源的任何建议.

多语言支持以及需要制定哪些方面来支持他们?

对于4,自定义词典如何与服务器端和客户端保持同步?拼写检查需要在客户端进行,所以它们是否每次都在初始启动时被推下,或者它们是否经常同步?

nlp spell-checking languagetool

12
推荐指数
2
解决办法
9650
查看次数

在ContainerRequestFilter中填充spring请求范围的bean

我使用jersey 1.13和spring 3.1.1编写了一个休息服务,它运行在tomcat 6上.在tomcat中,我正在使用一个将进行身份验证的领域.在我的应用程序中,我需要当前用户,但我不想在每个资源中从泽西访问SecurityContext.我想在我的其余资源中注入一个请求范围的ApplicationConfig对象,该资源将包含当前用户.稍后我可以扩展此类以包含更多请求级别配置参数.这对我来说似乎是一个很好的抽象.

@Component
@Scope(value = "request")
public class ApplicationConfig
{
    private String userCode;

    public String getUserCode()
    {
        return this.userCode;
    }

    public void setUserCode(String userCode)
    {
        this.userCode = userCode;
    }
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个ApplicationConfigManager来提供对配置的访问.

@Component
public class ApplicationConfigManager
{
    @Autowired
    public ApplicationConfig applicationConfig;

    public ApplicationConfig getApplicationConfig()
    {
        return this.applicationConfig;
    }
}
Run Code Online (Sandbox Code Playgroud)

应用程序配置管理器定义为单例(默认),但ApplicationConfig应该是请求范围,因此是@Scope注释.

我正在使用(jersey)ContainterRequestFilter在应用程序配置对象上设置用户.

@Component
@Provider
public class ApplicationConfigFilter implements ResourceFilter, ContainerRequestFilter
{
    @Autowired
    private ApplicationConfigManager applicationConfigManager;

    @Override
    public ContainerRequest filter(ContainerRequest request)
    {
        this.applicationConfigManager.getApplicationConfig().setUserCode(
            request.getSecurityContext().getUserPrincipal().getName()
        );
        return request;
    }

    @Override
    public ContainerRequestFilter …
Run Code Online (Sandbox Code Playgroud)

spring jersey

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

在XWPFTableCell(docx)中设置表的列宽

我正在用apache-poi生成一个docx文件.在wordfile中,我添加了表,其列的宽度我希望看到固定.

目前,我使用此处描述的技术:http://apache-poi.1045710.n5.nabble.com/Is-there-a-way-set-set-the-width-of-a-column-in-XWPFTableCell -td5711491.html

基本上,这需要设置

cell.getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(cols[j])); 
Run Code Online (Sandbox Code Playgroud)

在该列的每个单元格上.

问题是,当文件在MS Word中完美打开时,open office会以不同的方式将我设置的值解释为列宽.虽然MS Word显然假设20个点为单位,但开放办公室似乎使用点代替,因此当我在OO中打开生成的文档时,所有列都宽20倍.

通常当我在生成的输出中看到一些奇怪的东西时,我解压缩docx文件,查看值应该是什么并更改我的代码.但是开放式办公室似乎无法保存到docx,因此我无法更改OO中的值将其保存回来并查看Word是否仍然正确解释文档以便找到跨应用程序解决方案.

知道如何设置表格列的宽度,以便OO和MS Wordt同样解释它吗?

java ms-word openoffice-writer apache-poi xwpf

12
推荐指数
3
解决办法
2万
查看次数

Java8 Collections.sort(有时)不会对JPA返回的列表进行排序

Java8在我的JPA EclipseLink 2.5.2环境中继续做一些奇怪的事情.我不得不删除问题/sf/ask/1876432841/ 昨天,因为在这种情况下的排序受到奇怪的JPA行为的影响 - 我通过强迫在进行最终排序之前的第一个排序步骤.

仍然在Java 8中使用JPA Eclipselink 2.5.2,以下代码有时不会在我的环境中排序(Linux,MacOSX,两者都使用build 1.8.0_25-b17).它在JDK 1.7环境中按预期工作.

public List<Document> getDocumentsByModificationDate() {
    List<Document> docs=this.getDocuments();
    LOGGER.log(Level.INFO,"sorting "+docs.size()+" by modification date");
    Comparator<Document> comparator=new ByModificationComparator();
    Collections.sort(docs,comparator);
    return docs;
}
Run Code Online (Sandbox Code Playgroud)

从JUnit测试调用时,上述函数正常工作.在生产环境中进行debbuging时,我会得到一个日志条目:

INFORMATION: sorting 34 by modification date
Run Code Online (Sandbox Code Playgroud)

但是在TimSort中,nRemaining <2的返回语句被命中 - 因此不会发生排序.JPA提供的IndirectList(请参阅jpa返回的集合?)被认为是空的.

static <T> void sort(T[] a, int lo, int hi, Comparator<? super T> c,
                     T[] work, int workBase, int workLen) {
    assert c != null && a != null && lo >= 0 && lo <= hi …
Run Code Online (Sandbox Code Playgroud)

java sorting jpa eclipselink java-8

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

什么是Apache POI中的CTP,CTTbl类(对象)?

我正在尝试了解Apache POI的某些部分.例如,我试图从现有的docx文件中获取文本(或表格等).例如,XWPFDocument中有一个方法getParagraph(.. CTP p):
它返回"带有CTP类p的段落".但什么是CTP类?我查看了文档的xml结构,但没有找到类似的东西.因此,我不知道如何首先调用方法.对于相同的XWPFDocument,还有一个方法getTable(CTTbl CTTbl),它通过其CTtbl-Object返回一个表.

对于ooxml文档中的每个部分/类型的数据,似乎都有一个CP*,所以我想了解如何使用它们.此外,从文档中可以看出,这些方法似乎是获取元素而不将其粘贴到集合中或猜测其位置的唯一直接方法.

java docx ctp apache-poi xwpf

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

如何在Ubuntu 18.04.2 LTS上使Java FX与OpenJDK 8一起运行?

尝试在环境中编译JavaFX应用程序时:

java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)

cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

cannot access javafx.event.EventHandler
[ERROR]   class file for javafx.event.EventHandler not found
Run Code Online (Sandbox Code Playgroud)

我尝试通过以下链接找到解决方案:

最有希望的行动在哪里

  1. 使用apt安装openjfx
  2. 将JAVA_HOME环境变量设置为/ usr / lib / jvm / java-8-openjdk-amd64

但是错误仍然存​​在。

要使OpenJDK 8和JavaFX在Ubuntu 18.04.2 LTS上运行需要做什么?

java ubuntu javafx openjfx

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

PHP HTML创建库

我正在寻找一个允许以下列风格创建HTML的PHP​​解决方案:

$head=new Head();
$title=new Title("The title of the page");
$head->setTitle($title);

$body=new Body();
$h1=new H(1,"Header 1");
$body->add($h1);

$html=new HTML();
$html->setHead($head);
$html->setBody($body);

echo $html->asHTMLString();
Run Code Online (Sandbox Code Playgroud)

什么PHP库有类似的API? 我对"什么是最好的......?"不感兴趣.事实上,API是可比较的,这是我想知道的.

html php

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

如何将文件从 docker 容器共享到主机

我有一个运行良好的 docker 容器。它会在目录中生成一些文件/Project/userfiles.txt。我需要这些文件用于某些测试目的。但是当这个容器停止时,一切都被删除了。所以我需要将此文件从容器复制到主机。

我在生成文件的容器中运行了一个 python 应用程序。我想要一些命令或任何方式,userfiles.txt当容器停止时,我可以在最后将其发送到主机。

为此,我可以使用docker cp命令并尝试过,但由于docker not found未安装 docker,它给了我一个错误。

如何从容器到主机共享文件?

containers docker

9
推荐指数
2
解决办法
2万
查看次数