0

私は自分のサイトで作業しており、Word へのエクスポートを作成しようとしています。エクスポートはうまく機能し、HTML 文字列を DOCX に変換します。

行間隔を調整する方法を見つけようとしています。デフォルトでは、Word は後に 8pt の間隔を追加し、行間を 2 倍に設定しています。私は0とシングルを好むでしょう。

Word文書を保存するために作成した関数は次のとおりです。

private static void SaveDOCX(string fileName, string BodyText, bool isLandScape, double rMargin, double lMargin, double bMargin, double tMargin)
{
    string htmlSectionID = "Sect1";
    //Creating a word document using the the Open XML SDK 2.0
    WordprocessingDocument document = WordprocessingDocument.Create(fileName, WordprocessingDocumentType.Document);

    //create a paragraph
    MainDocumentPart mainDocumenPart = document.AddMainDocumentPart();
    mainDocumenPart.Document = new DocumentFormat.OpenXml.Wordprocessing.Document();
    Body documentBody = new Body();
    mainDocumenPart.Document.Append(documentBody);


    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes("<html><head></head><body>" + BodyText + "</body></html>"));

    // Create alternative format import part.
    AlternativeFormatImportPart formatImportPart = mainDocumenPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.Html, htmlSectionID);

    //ms.Seek(0, SeekOrigin.Begin);

    // Feed HTML data into format import part (chunk).
    formatImportPart.FeedData(ms);
    AltChunk altChunk = new AltChunk();
    altChunk.Id = htmlSectionID;

    mainDocumenPart.Document.Body.Append(altChunk);

    /*
     inch equiv = 1440 (1 inch margin)
     */
    double width = 8.5 * 1440;
    double height = 11 * 1440;

    SectionProperties sectionProps = new SectionProperties();
    PageSize pageSize;
    if (isLandScape)
    {
        pageSize = new PageSize() { Width = (UInt32Value)height, Height = (UInt32Value)width, Orient = PageOrientationValues.Landscape };
    }
    else
    {
        pageSize = new PageSize() { Width = (UInt32Value)width, Height = (UInt32Value)height, Orient = PageOrientationValues.Portrait };
    }

    rMargin = rMargin * 1440;
    lMargin = lMargin * 1440;
    bMargin = bMargin * 1440;
    tMargin = tMargin * 1440;

    PageMargin pageMargin = new PageMargin() { Top = (Int32)tMargin, Right = (UInt32Value)rMargin, Bottom = (Int32)bMargin, Left = (UInt32Value)lMargin, Header = (UInt32Value)360U, Footer = (UInt32Value)360U, Gutter = (UInt32Value)0U };

    sectionProps.Append(pageSize);
    sectionProps.Append(pageMargin);
    mainDocumenPart.Document.Body.Append(sectionProps);

    //Saving/Disposing of the created word Document
    document.MainDocumentPart.Document.Save();
    document.Dispose();
}

検索すると、次のコードが見つかりました。

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

関数の多くの場所に配置しましたが、この設定を追加する正しい場所が見つからないようです。

4

2 に答える 2