none
C#にてWORDファイル作成時に任意のFONTを1行目から設定する方法について RRS feed

  • 質問

  • いつもお世話になっております。

    以前にC#でルビ付きの文章を作成し、WORDファイルに保存する方法を質問させて頂き、無事作成することができたのですが、ルビを振られた部分と振られていない部分(ひらがなの部分)でFONTの種類が違う状態となってしないました。
    この状態を解決したく、任意のFONTとFONTサイズを設定するよう以下のようなプログラムを組んでみましたが、1行目だけ変更されない状態となり、その原因が分かりません。
    どのようにしたら、指定したFONTやFONTサイズをWORDファイルの1行目から設定できるのでしょうか?

    ご教授頂けると幸いです。

    宜しくお願い致します。

    【開発環境】

    OS:Windows7
    開発言語:C#
    開発環境:Visual Studio 2015

    【以下作成したプログラム】

    ver app = new Word.Application();
    app.Visible = true;
    ver doc = app.Documents.Add();
    string mojiretu - "私の名前は田中です。\r\n東京都に住んでいます。"
    doc.Range(0,0).Text = mojiretu;
    if (doc.Paragraphs.Count > 0)
    {
        foreach(Paragraph p in doc.Paragraphs)
        {
            p.Range.Font.Name = "MS 明朝";
            p.Range.Font.Size = 10;
        }
    }
    string filename = "test.docx";
    object missing = System.Reflection.Missing.Value;
    object encode = Microsoft,Office.Core.MsoEncoding.msoEncoding.JapaneseShiftJIS;
    doc.SaveAs(ref filename,
                        ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,
                        ref encode,
                        ref missing,ref missing,ref missing,ref missing,ref missing)
    doc.Close();
    doc = null;
    app.Quit();
    app = null;
    2017年10月18日 16:08

回答

  • こんな?

    doc.Range(doc.Paragraphs[1].Range.Start).Font.Name = "MS 明朝";
    foreach (Word.Paragraph p in doc.Paragraphs)
    {
        p.Range.Font.Name = "MS 明朝";
        p.Range.Font.Size = 10;
    }

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2017年10月18日 17:25

すべての返信

  • こんな?

    doc.Range(doc.Paragraphs[1].Range.Start).Font.Name = "MS 明朝";
    foreach (Word.Paragraph p in doc.Paragraphs)
    {
        p.Range.Font.Name = "MS 明朝";
        p.Range.Font.Size = 10;
    }

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    2017年10月18日 17:25
  • C#よりもWordの使い方として、フォント等、期待する設定が行われたテンプレートを作成し、C#からはテンプレートから新規文書を作成してはどうでしょうか。
    C#コードで複雑な設定を行うより確実です。
    2017年10月19日 1:31
  • ご回答ありがとうございます。

    任意のFONTと任意のFONTサイズが設定できることが仕様として盛り込まれているため、

    ご回答の方法ですと確実ではありますが、全てのFONTとFONTサイズの組み合わせ分テンプレートが

    必要になってしまうため難しいです。

    2017年10月19日 17:00
  • ご回答ありがとうございます。

    プログラムの記載ありがとうございます。

    期待していることができました。

    また、分からないことが発生した時に質問させて頂くかと思いますが、

    ご教授頂けると幸いです。

    2017年10月19日 17:03