2016-03-18 47 views
2

C#EPPlusの印刷可能Excelワークシートで1つの画像(「DRAFT」を表示)を追加します。Excelシート(EPPlus)を印刷するときに最後の行の行番号を取得する方法

ワークシートの各ページの最後に表示されている行を印刷するときにそれを見つける方法があるかどうかを知る必要があります。私はそれが常にセルの内容に依存するので、ページあたりの行数が固定されているとは思わない。

ここには、イメージを挿入するためのページごとの行数(30)を使用する現在のコードがあります。この結果、印刷​​可能なページあたり約1つのイメージが生成されますが、イメージが同じ場所にない新しいページが1つあります。 (少しオフ、細胞の内容により異なります。)

public void InsertDraftImage(ExcelWorksheet worksheet, FileInfo draft_image) 
{ 

    int maxRowNumber = worksheet.Dimension.End.Row; 
    int rowByPage = 30; 
    int numberOfPage = (maxRowNumber/rowByPage) + 1; 


    ExcelPicture picture = null; 
    for(int i = 0; i < numberOfPage; i++) 
    { 
     if(draft_image != null) 
     { 
      picture = worksheet.Drawings.AddPicture(i.ToString(), draft_image); 
      picture.SetSize(609, 545); //original image size 
      picture.SetPosition(i * rowByPage, 0, 1, 0); 
      picture.EditAs = eEditAs.Absolute; 
     } 
    } 
+1

これをすべてのページの下部に自動的に表示されるようにフッターに配置するとどうなりますか? [関連の回答](http://stackoverflow.com/a/14524378/4879022) – Spidey

+0

私は、大きな画像のためにデータを使用しないことを知っているように、各ページの広い領域をカバーする画像を追加したい "ドラフト"。フッターが本当に好きなことをすることができますか? – pikarie

+0

ページ全体で透かしを意味するのですか? – Spidey

答えて

0

成功せず、同僚とのEPPlusから「ExcelHeaderFooter.cs」で不足しているコードを実装しようとした後、我々は最終的にアーニーの提案に従うことによってそれをやりました!

C#のEPPlusで生成される印刷可能なExcelファイルの各ページに画像を挿入する最後のコードがあります。

フッターに画像を追加し、ブールScaleWithDocをfalse(デフォルト= true)に設定します。

public void InsertDraftImage(ExcelWorksheet worksheet, FileInfo draft_image) 
{ 
    ExcelHeaderFooterText footer = worksheet.HeaderFooter.OddFooter; //all page have same footer 
    footer.InsertPicture(draft_image, PictureAlignment.Centered); 
} 

このコードを自分のメソッドに追加して、ExcelWorksheet(他のすべてのExcelスタイル、設定、設定)を作成します。

XmlAttribute temp = worksheet.WorksheetXml.CreateAttribute("scaleWithDoc"); 
temp.Value = "0"; 
worksheet.WorksheetXml.GetElementsByTagName("headerFooter")[0].Attributes.Append(temp); 

package.Save(); 
関連する問題