2015-02-12 64 views
-1

我嘗試使用itextsharp創建PDF時嘗試將「Amount」的DataGrid列的某一列對齊到右側,但無法這樣做。所有列左對齊,一些列應左對齊,最後一列應右對齊。請幫忙從Win表單在iTextSharp中將列對齊更改爲「右」

以下是代碼。

PdfPTable pdfTable = new PdfPTable(dataGridView1.ColumnCount); 
      pdfTable.SetWidths(new float[] { 5f, 10f, 10f, 7f, 9f }); 
      pdfTable.DefaultCell.Padding = 3; 
      pdfTable.WidthPercentage = 90; 
      pdfTable.HorizontalAlignment = Element.ALIGN_LEFT; 
      pdfTable.DefaultCell.BorderWidth = 1; 

foreach (DataGridViewColumn column in dataGridView1.Columns) 
      { 

       PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText,  fontTitle2)); 
       cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240); 
       cell.HorizontalAlignment = Element.ALIGN_CENTER; 
       pdfTable.AddCell(cell); 
      } 

foreach (DataGridViewRow row in dataGridView1.Rows) 
      { 
       foreach (DataGridViewCell cell in row.Cells) 
       { 

        pdfTable.AddCell(new Phrase(cell.Value.ToString(), fontTitle)); 

       } 
      } 

回答

0

你的問題很奇怪,因爲你創建第一行的方式會導致假設你已經知道你的問題的答案。

當你創建你的第一行,你這樣做:

PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText, fontTitle2)); 
cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240); 
cell.HorizontalAlignment = Element.ALIGN_CENTER; 
pdfTable.AddCell(cell); 

您創建一個PdfPCell文本模式並設置對齊到ALIGN_CENTER在細胞水平。這是對的。

當您創建的後續行,你這樣做:

pdfTable.AddCell(new Phrase(cell.Value.ToString(), fontTitle)); 

這也創造了一個PdfPCell文本模式(內部)和默認的單元格的比對使用。如果您沒有更改此對齊方式,則對齊方式爲ALIGN_LEFT

而不是使用:

pdfTable.AddCell(new Phrase(cell.Value.ToString(), fontTitle)); 

你爲什麼不使用時,您創建的第一行代碼,你已經有了知識?

PdfPCell cell = new PdfPCell(new Phrase(cell.Value.ToString(), fontTitle)); 
cell.HorizontalAlignment = Element.ALIGN_RIGHT; 
pdfTable.AddCell(cell); 

當然:如果某些細胞需要Element.ALIGN_LEFT和其他細胞需要Element.ALIGN_RIGHT,你將不得不如果在你的循環添加。如果應該檢查cell是否是row中的最後一個單元格。

+0

解決了這個問題,但是你可以幫忙用if循環代碼 – 2015-02-12 16:59:08