iT邦幫忙

0

C#-產出pdf的資料有跨第二頁,要如何才能重覆第一頁的表頭

請問各位有使用itextsharp畫talbe嗎?
假設,若產出pdf的資料有跨第二頁,要如何才能重覆第一頁的表頭?
我有上網找過資料,目前使用如下語法:
table.HeaderRows = 1;
但我發現,這語法使用後,第一頁的表頭會消失。
目前還在找資料,請問各位前輩的經驗。
另外:補充一點,我是使用c#的語法

klm2242 iT邦研究生 1 級 ‧ 2020-07-22 10:33:34 檢舉
謝謝前輩們的回覆,但我後來發現一個問題,就是我的表頭如果有合併列的話,使用HeaderRows產報表會有問題,請問有人知道如何解嗎?例如:表頭下的資料位移了!
請問若表頭有合併欄位的話,要如何使用table.HeaderRows來跨頁顯示呢?
0
海綿寶寶
iT邦大神 1 級 ‧ 2020-07-22 09:45:45

根據這篇
如果你有使用 SelectedRows() 的話
HeaderRows就不 work

然後有一個笨方法
如果沒有其他好方法的話就可以用
就是
「把 HeaderRow 獨立成一個 table,然後放在每一頁的最前面」
/images/emoticon/emoticon06.gif

klm2242 iT邦研究生 1 級 ‧ 2020-07-22 09:53:30 檢舉

謝謝你的回覆,我沒有使用SelectedRows…
我再try一下你所提供的方法

klm2242 iT邦研究生 1 級 ‧ 2020-07-22 10:10:23 檢舉

謝謝你,看起來似乎解決了!!!!有問題再發文請教!!

0
glj8989332
iT邦新手 3 級 ‧ 2020-07-22 10:11:15

看看是不是 table.HeaderRows的設定位置有差
我目前可行的簡單範例.

protected void Page_Load(object sender, EventArgs e)
{
    FileStream fs = new FileStream("Example1.pdf", FileMode.Create, FileAccess.Write, FileShare.None);
    Document doc = new Document();
    PdfWriter writer = PdfWriter.GetInstance(doc, fs);
    doc.Open();
    doc.Add(new Paragraph("Hello World"));
    doc.Add(GetTable());
    doc.Close();
}

private PdfPTable GetTable()
{
    PdfPTable table = new PdfPTable(2);
    table.AddCell("Key");
    table.AddCell("Value");
    table.HeaderRows = 1;
    for (int i = 1; i < 51; i++)
    {
        table.AddCell("key: " + i);
        table.AddCell("value: " + i);
    }
    return table;
}

產生的Table header跨頁仍都有Header
https://ithelp.ithome.com.tw/upload/images/20200722/20128651Fhma94Lzas.png

klm2242 iT邦研究生 1 級 ‧ 2020-07-22 10:33:08 檢舉

謝謝你的回覆

0
souda
iT邦研究生 3 級 ‧ 2020-07-23 12:46:04

考慮用 CrystalReport 嗎?

我要發表回答

立即登入回答