1

Docx.dll を使用して docx ジェネレーターを作成しています。これまでのところ、画像とテキストをドキュメントに挿入できました。画像と段落がずれています。テキストを画像でラップする必要があります。どうすればいいのですか?Google で検索したところ、このリンク Adding Images to Documents in Word 2007 by Using the Open XML SDK 2.0が見つかりました。コードは機能しており、Word ドキュメントも作成していますが、docx ファイルは開いていません。

c#で「テキストの前に」テキストをラップするにはどうすればよいですか?

public static DocX CreateDocumentFile(List<CompanyInfo> info)
    {

        DocX document = DocX.Load(@"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\RetailWrite.docx");

        foreach (var companies in info)
        {

            Formatting fm = new Formatting();

            /*Inserting Image*/
            Novacode.Image img = document.AddImage(@"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\logos\slime.png");
            Novacode.Paragraph companyLogo = document.InsertParagraph("");
            Picture pic1 = img.CreatePicture();
            companyLogo.InsertPicture(pic1, 0);


            Novacode.Paragraph CompanyName = document.InsertParagraph(companies.Name.ToString());
            CompanyName.StyleName = "COMPANY";


            Novacode.Paragraph CompanyPosition = document.InsertParagraph(companies.Position.ToString());
            CompanyPosition.StyleName = "posit";


            Novacode.Paragraph CompanyDescription = document.InsertParagraph(companies.Description.ToString());
            CompanyDescription.StyleName = "descrip";

            Novacode.Paragraph blankPara = document.InsertParagraph(" ");
            Novacode.Paragraph blankPara2 = document.InsertParagraph(" ");
        }

        return document;
    }
4

1 に答える 1

0

問題の解決策: MS-Word の相互運用機能を使用して、画像全体にワードラップを適用しました。

public static void FormatImages()
    {
        Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
        string filePath = @"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\Temp.docx";
        Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(filePath, false);

        object save_changes = false;
        foreach (Microsoft.Office.Interop.Word.InlineShape item in wordApp.ActiveDocument.InlineShapes)
        {
            if (item != null)
            {
                if (item.Type == Microsoft.Office.Interop.Word.WdInlineShapeType.wdInlineShapePicture)
                {
                    item.Select();
                    Microsoft.Office.Interop.Word.Shape shape = item.ConvertToShape();
                    shape.WrapFormat.Type = WdWrapType.wdWrapFront;
                }
            }
        }

        doc.SaveAs(@"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\RetailWrite.docx");
        doc.Close(save_changes);
        wordApp.Quit(save_changes);
        if (System.IO.File.Exists(@"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\Temp.docx"))
        {
            System.IO.File.Delete(@"C:\Users\newton.sheikh\Documents\Visual Studio 2010\Projects\MSOffice\OpenXML\OpenXML\Temp.docx");
        }
    }
于 2013-04-12T10:31:15.397 に答える