10

開いている XML では、Word ドキュメントの既定値は "Spacing After: 10 pt" になっています。これを 0 に変更するにはどうすればよいので、スペースがありません。

これが私のコードです。これは、データベースから情報をほとんど取得し、それを Word 文書に配置して印刷できるようにします。しかし、スペースが原因でドキュメントが大きくなりすぎています。

using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(filepath,  WordprocessingDocumentType.Document)) {
    MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
    mainPart.Document = new Document();
    Body body = mainPart.Document.AppendChild(new Body());

    Paragraph para_main = body.AppendChild(new Paragraph());
    Run run_main = para_main.AppendChild(new Run());

    // Goes through all of the forms
    foreach (var form in forms) {
        Table table = new Table();
        // Initialize all of the table properties
        TableProperties tblProp = new TableProperties(
            new TableBorders(
                new TopBorder() { Val = new EnumValue<BorderValues>(BorderValues.BasicBlackSquares), Size = 16 },
                new LeftBorder() { Val = new EnumValue<BorderValues>(BorderValues.BasicBlackSquares), Size = 16 },
                new RightBorder() { Val = new EnumValue<BorderValues>(BorderValues.BasicBlackSquares), Size = 16 },
                new BottomBorder() { Val = new EnumValue<BorderValues>(BorderValues.BasicBlackSquares), Size = 16 },
                new InsideHorizontalBorder() { Val = new EnumValue<BorderValues>(BorderValues.BasicBlackSquares), Size = 8 },
                new InsideVerticalBorder() { Val = new EnumValue<BorderValues>(BorderValues.BasicBlackSquares), Size = 8 }
            ),
            new SpacingBetweenLines() { Before = "20", After = "20" }
            //new TableCellProperties(
            //    new 
            //new TableJustification() {Val = TableRowAlignmentValues.Center}
        );

        table.AppendChild<TableProperties>(tblProp);

        Paragraph para_header = body.AppendChild(new Paragraph());
        Run run_header = para_header.AppendChild(new Run());
        RunProperties runProps = run_header.AppendChild(new RunProperties(new Bold()));

        string username = form.Username;
        string proces_header = form.HeaderTitle;

        run_header.AppendChild(new Text(proces_header + " | " + username));

        for (int i = 0; i < form.FieldList.Count; i++) {
            if (!(form.FieldList[i].Token == "USR" || form.FieldList[i].Token == "SNT")) {
                TableRow tr = new TableRow();
                TableCell header_cell = new TableCell();
                header_cell.Append(new Paragraph(new Run(new Text(form.FieldList[i].Label))));
                TableCell value_cell = new TableCell();
                value_cell.Append(new Paragraph(new Run(new Text(form.FieldList[i].Value))));
                tr.Append(header_cell, value_cell);
                table.Append(tr);
            }
        }
        wordDoc.MainDocumentPart.Document.Body.Append(table);
    }
    mainPart.Document.Save();
    wordDoc.Close();
    return "Success";
}
4

1 に答える 1

15

行間隔は段落のプロパティに追加する必要があり、もちろんそれを段落に追加する必要があります。

これが長い道のりです。SpacingBetweenLines は行の高さを設定することもでき、「ルール」は前後の値の使用方法を制御します。

SpacingBetweenLines spacing = new SpacingBetweenLines() { Line = "240", LineRule = LineSpacingRuleValues.Auto, Before = "0", After = "0" };
ParagraphProperties paragraphProperties = new ParagraphProperties();
Paragraph paragraph = new Paragraph();

paragraphProperties.Append(spacing);
paragraph.Append(paragraphProperties);

行間隔をテーブルに設定しようとしているようです。それはそのようには機能しません(私が試したと信じてください)。表の周りのテキストは、テキストの折り返しと表の位置によって制御されます。

また、複数のテーブルで作業する場合、それらを分離したままにしたい場合は、テーブルの後に段落 (またはテーブル以外のもの) が必要です。そうしないと、テーブルが一緒にマージされます。

そのスペースが必要な場合は、フォントを .5 または非常に小さいものに設定して段落を作成し、各表の後に追加します。

于 2013-03-20T13:25:14.740 に答える