首页 > 解决方案 > 设置字体不影响输出 excel 文件中单元格的外观

问题描述

我尝试在 xlsx 中给出波斯语文本和数字。我希望数字以阿拉伯语和波斯语显示

pdf报告图片

如您所见,应用了波斯字体,数字是波斯语但不是 xlsx

xlsx 报告图片

如您所见,字体已设置但未应用另一方面,“B Farnaz”字体已安装在 Windows 操作系统中

<?xml version="1.0" encoding="UTF-8" ?>
<jasperReport
        xmlns="http://jasperreports.sourceforge.net/jasperreports"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
        name="rptReport"
        pageWidth="842"
        pageHeight="595"
        orientation="Landscape"
        columnWidth="802"
        leftMargin="20"
        rightMargin="20"
        topMargin="20"
        bottomMargin="20"
        whenNoDataType="AllSectionsNoDetail">
    <property name="net.sf.jasperreports.export.xlsx.exclude.origin.band.1" value="pageHeader"/>
    <property name="net.sf.jasperreports.export.xlsx.exclude.origin.band.2" value="pageFooter"/>
    <property name="net.sf.jasperreports.export.xlsx.exclude.origin.band.3" value="title"/>
    <property name="net.sf.jasperreports.crosstab.ignore.width" value="true"/>
    <style name="textStyle"  hTextAlign="Center" vTextAlign="Middle" fontName="B Farnaz"  fontSize="10" pdfFontName= "C:/fonts/nazanin.ttf" pdfEncoding="Identity-H"/>
    <parameter name="reportName" class="java.lang.String"/>
    <parameter name="currentDate" class="java.lang.String"/>
    <parameter name="number" class="java.lang.String"/>
    <parameter name="pageName" class="java.lang.String"/>
    <parameter name="ofName" class="java.lang.String"/>
    <parameter name="logo" class="java.io.InputStream"/>
    <field name="count" class="java.lang.Integer"/>
    <field name="organizationId" class="java.lang.String"/>
    <field name="orgName" class="java.lang.String"/>
    <field name="orgCode" class="java.lang.String"/>
    <field name="orgTypeName" class="java.lang.String"/>
    <field name="positionId" class="java.lang.String"/>
    <field name="title" class="java.lang.String"/>
    <field name="orgParentName" class="java.lang.String"/>
    <title>
        <band height="61">
            <rectangle>
                <reportElement x="0" y="0" width="802" height="60" uuid="e0e43037-9be9-410e-9e49-9f03a811629b"/>
                <graphicElement>
                    <pen lineWidth="0.75"/>
                </graphicElement>
            </rectangle>
            <staticText>
                <reportElement x="70" y="13" width="40" height="20" uuid="80c01bc2-7498-4a53-9183-9716832fa86e"/>
                <textElement textAlignment="Left">
                    <font  fontName="B Farnaz"  size="14" pdfFontName= "C:/Users/m.shadkam/Desktop/PORTAL/portal-server/src/main/resources/report/fonts/nazanin.ttf" pdfEncoding="Identity-H"/>
                </textElement>
                <text><![CDATA[تاريخ :]]></text>
            </staticText>
            <staticText>
                <reportElement x="70" y="35" width="40" height="20" uuid="df222e3e-0a63-4cff-8b4a-7b7d6cdad5b2"/>
                <textElement textAlignment="Left">
                    <font  fontName="B Farnaz"  size="14" pdfFontName= "C:/Users/m.shadkam/Desktop/PORTAL/portal-server/src/main/resources/report/fonts/nazanin.ttf" pdfEncoding="Identity-H"/>
                </textElement>
                <text><![CDATA[شماره :]]></text>
            </staticText>
            <image hAlign="Right">
                <reportElement x="690" y="13" width="110" height="44" uuid="6b166494-6df6-4472-8140-da4f93644616"/>
                <imageExpression><![CDATA[$P{logo}]]></imageExpression>
            </image>
            <textField>
                <reportElement x="3" y="35" width="65" height="20" uuid="52b5428c-f329-4d65-be61-51e529269ca7"/>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font  fontName="B Farnaz" pdfFontName= "C:/fonts/BNAZANIN.TTF" pdfEncoding="Identity-H"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{number}]]></textFieldExpression>
            </textField>
            <textField pattern="">
                <reportElement x="0" y="1" width="802" height="35" uuid="c9904a66-50ba-4cee-9fa9-b6b29feec8b0"/>
                <textElement textAlignment="Center" verticalAlignment="Top">
                    <font  fontName="B Farnaz" size="14" pdfFontName= "C:/fonts/titr.ttf" pdfEncoding="Identity-H"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{reportName}]]></textFieldExpression>
            </textField>
            <textField pattern="">
                <reportElement x="3" y="13" width="65" height="20" uuid="fdc85694-ba29-4858-915e-23399415a806"/>
                <textElement textAlignment="Right" verticalAlignment="Middle">
                    <font  fontName="B Farnaz" pdfFontName= "C:/fonts/BNAZANIN.TTF" pdfEncoding="Identity-H"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{currentDate}]]></textFieldExpression>
            </textField>
        </band>
    </title>
    <pageHeader>
        <band height="20">
            <textField>
                <reportElement x="739" y="0" width="63" height="20" />
                <textElement textAlignment="Right">
                    <font  fontName="B Farnaz" pdfFontName="C:/fonts/BNAZANIN.TTF" pdfEncoding="Identity-H"/>
                </textElement>
                <textFieldExpression><![CDATA[$P{pageName} + " " + $V{PAGE_NUMBER} + " " + $P{ofName} +" " + $V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
        </band>
    </pageHeader>
    <pageFooter>
        <band height="23" splitType="Stretch">
            <textField>
                <reportElement x="0" y="2" width="802" height="20" uuid="b8f61bae-86d8-4a73-8c23-3484b431a65e"/>
                <textElement textAlignment="Center">
                    <font  fontName="B Farnaz" pdfFontName= "C:/fonts/BNAZANIN.TTF" pdfEncoding="Identity-H"/>
                </textElement>
                <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
        </band>
    </pageFooter>
    <summary>
        <band height = "79">
            <crosstab ignoreWidth="true">
                <reportElement x="0" y="0" height="79" width="500"/>
                <crosstabHeaderCell>
                    <cellContents backcolor="#F0F8FF" mode="Opaque">
                        <box>
                            <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                        </box>
                        <textField>
                            <reportElement style="textStyle"  x="100" y="0" width="100" height="100" />
                            <box>
                                <topPen lineWidth="0.5"/>
                                <leftPen lineWidth="0.5"/>
                                <bottomPen lineWidth="0.5"/>
                                <rightPen lineWidth="0.5"/>
                            </box>
                            <textFieldExpression><![CDATA["اداره امور"]]></textFieldExpression>
                        </textField>
                        <textField>
                            <reportElement style="textStyle"  x="0" y="0" width="100" height="100" />
                            <box>
                                <topPen lineWidth="0.5"/>
                                <leftPen lineWidth="0.5"/>
                                <bottomPen lineWidth="0.5"/>
                                <rightPen lineWidth="0.5"/>
                            </box>
                            <textFieldExpression><![CDATA["واحد/کادر"]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabHeaderCell>
                <rowGroup name="orgName" width="100" totalPosition="End">
                    <bucket class="java.lang.String">
                        <bucketExpression><![CDATA[$F{orgName}]]></bucketExpression>
                    </bucket>
                    <crosstabRowHeader>
                        <cellContents backcolor="#F0F8FF" mode="Opaque">
                            <box>
                                <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                            </box>
                            <textField>
                                <reportElement style="textStyle" x="0" y="0" width="100" height="25" uuid="722e2c03-df3c-4012-aecf-91b7a8bad18d"/>
                                <textFieldExpression><![CDATA[$V{orgName}]]></textFieldExpression>
                            </textField>
                        </cellContents>
                    </crosstabRowHeader>
                    <crosstabTotalRowHeader>
                        <cellContents backcolor="#BFE1FF" mode="Opaque">
                            <box>
                                <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                            </box>
                            <staticText>
                                <reportElement  style="textStyle" x="0" y="0" width="200" height="25" uuid="4e9afca3-c0a3-4182-b3ce-9afb39fd3468"/>
                                <text><![CDATA[کل]]></text>
                            </staticText>
                        </cellContents>
                    </crosstabTotalRowHeader>
                </rowGroup>
                <rowGroup name="orgParentName" width="100" totalPosition="End">
                    <bucket class="java.lang.String">
                        <bucketExpression><![CDATA[$F{orgParentName}]]></bucketExpression>
                    </bucket>
                    <crosstabRowHeader>
                        <cellContents backcolor="#F0F8FF" mode="Opaque">
                            <box>
                                <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                            </box>
                            <textField>
                                <reportElement style="textStyle" x="0" y="0" width="100" height="25" uuid="63804c09-f3f6-401f-8598-fa2e35860a8f"/>
                                <textFieldExpression><![CDATA[$V{orgParentName}]]></textFieldExpression>
                            </textField>
                        </cellContents>
                    </crosstabRowHeader>
                    <crosstabTotalRowHeader>
                        <cellContents backcolor="#BFE1FF" mode="Opaque">
                            <box>
                                <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                            </box>
                        </cellContents>
                    </crosstabTotalRowHeader>
                </rowGroup>
                <columnGroup name="title" height="100"  totalPosition="End">
                    <bucket class="java.lang.String">
                        <bucketExpression><![CDATA[$F{title}]]></bucketExpression>
                    </bucket>
                    <crosstabColumnHeader>
                        <cellContents backcolor="#F0F8FF" mode="Opaque">
                            <box>
                                <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                            </box>
                            <textField>
                                <reportElement style="textStyle" x="0" y="0" width="25" height="100" uuid="7edd05fd-4252-404d-bb82-54a705040663"/>
                                <textElement rotation="Left"/>
                                <textFieldExpression><![CDATA[$V{title}]]></textFieldExpression>
                            </textField>
                        </cellContents>
                    </crosstabColumnHeader>
                    <crosstabTotalColumnHeader>
                        <cellContents backcolor="#BFE1FF" mode="Opaque">
                            <box>
                                <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                            </box>
                            <staticText>
                                <reportElement  style="textStyle" x="0" y="0" width="25" height="100" uuid="de037370-9595-4ab0-8d55-ec94159f9ca0"/>
                                <textElement rotation="Left"/>
                                <text><![CDATA[کل]]></text>
                            </staticText>
                        </cellContents>
                    </crosstabTotalColumnHeader>
                </columnGroup>
                <measure name="countMeasure" class="java.lang.Integer" calculation="Sum">
                    <measureExpression><![CDATA[$F{count}]]></measureExpression>
                </measure>
                <crosstabCell width="25" height="25">
                    <cellContents>
                        <box>
                            <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                        </box>
                        <textField>
                            <reportElement style="textStyle" x="0" y="0" width="25" height="25" uuid="2de587ed-74f0-46c2-8425-5a4e9bd120e6"/>
                            <textFieldExpression><![CDATA[$V{countMeasure}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
                <crosstabCell height="25" rowTotalGroup="orgName">
                    <cellContents backcolor="#BFE1FF" mode="Opaque">
                        <box>
                            <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                        </box>
                        <textField>
                            <reportElement style="textStyle"  x="0" y="0" width="25" height="25" uuid="e7dd4c40-847f-4df0-b910-f99566746ecb"/>
                            <textFieldExpression><![CDATA[$V{countMeasure}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
                <crosstabCell width="25" columnTotalGroup="title">
                    <cellContents backcolor="#BFE1FF" mode="Opaque">
                        <box>
                            <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                        </box>
                        <textField>
                            <reportElement style="textStyle" x="0" y="0" width="25" height="25" uuid="2ed6a617-5440-4bee-931e-dc4e16f0539d"/>
                            <textFieldExpression><![CDATA[$V{countMeasure}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
                <crosstabCell rowTotalGroup="orgName" columnTotalGroup="title">
                    <cellContents backcolor="#BFE1FF" mode="Opaque">
                        <box>
                            <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                        </box>
                        <textField>
                            <reportElement style="textStyle" x="0" y="0" width="25" height="25"/>
                            <textFieldExpression><![CDATA[$V{countMeasure}]]></textFieldExpression>
                        </textField>
                    </cellContents>
                </crosstabCell>
                <crosstabCell height="0" rowTotalGroup="orgParentName">
                    <cellContents backcolor="#BFE1FF" mode="Opaque">
                        <box>
                            <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                        </box>
                    </cellContents>
                </crosstabCell>
                <crosstabCell height="0" rowTotalGroup="orgParentName" columnTotalGroup="title">
                    <cellContents backcolor="#BFE1FF" mode="Opaque">
                        <box>
                            <pen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
                        </box>
                    </cellContents>
                </crosstabCell>
            </crosstab>
        </band>
    </summary>
</jasperReport>

我在报告中使用了波斯字体,但是这种波斯字体在报告的xlsx版本中没有应用,但在pdf版本中正确应用。

我也使用字体异常来解决这个问题,但它不适用于 excel 版本。

请帮助我正确显示 pdf 等 xlsx 中的文本和数字

标签: jasper-reportsexport-to-excel

解决方案


推荐阅读