2017-04-08 1 views
0

내 Sqlite를 PDF로 내보내려고합니다. 나는 그것을 할 수 있지만 한 행에 결과를 넣는 대신 결과를 다른 열에 넣습니다. 내가 원한 것은 데이터베이스 결과로 같은 열 (행을 증분)의 행을 채우는 것입니다. 이게 내가 가진거야. 이걸로 나를 도울 수 있니?안드로이드에서 itextpdf를 사용하여 테이블을 올바른 방법으로 저장하는 방법은 무엇입니까?

db = new Database(FirstActivity.this); 
     Cursor c = bd.getGroupsNamesMachines(); 

     PdfPTable table = new PdfPTable(2); 


     cell = new PdfPCell(new Phrase("groups")); 
     cell2 = new PdfPCell(new Phrase("machines")); 
     if (c.moveToFirst()) { 

      do { 

       String groups = c.getString(c.getColumnIndex("groupname")); 


       cell3 = new PdfPCell(new Phrase(groups)); 
       table.addCell(cell3); 

      } while (c.moveToNext()); 

     } 

     cell.setColspan(1); 
     cell2.setColspan(2); 
     cell3.setColspan(1); 
     table.addCell(cell); 
     table.addCell(cell2); 
     table.addCell(cell3); 
+0

귀하가 원하는 * 결과 *를 설명하십시오. 현재 코드 결과가 이상하게 나타납니다. – mkl

답변

2

설명서를 읽거나 비디오를 시청하십시오 : https://www.youtube.com/watch?v=6YwDME0Fl1c를 (처음 10 분 이상 전에, 당신은 미국의 모든 상태를 표시하는 테이블을 만드는 방법을 알 수 있습니다). 그 예를위한 코드는 여기에서 찾을 수 있습니다 : set format of header row in itext

당신의 경우에, 당신은 정말로 이상한 일을하고 있습니다. 2 열로 표를 만듭니다. 각 레코드에 두 개의 필드가 있으면 괜찮습니다. 그러나 머리글 셀을 추가하기 전에 본문 셀을 추가합니다. 난 당신이 3 열 (어떤 비논리적 인)와 머리글 행을 만들려고 생각하고 아마도 마지막 행을 완료하지 않습니다 (그리고 iText는 기본적으로 전체 행을 추가합니다). 데이터베이스 코드가 OK 인 경우 나도 몰라

// Table 
PdfPTable table = new PdfPTable(2); 
// Header 
PdfPCell cell1 = new PdfPCell(new Phrase("groups")); 
PdfPCell cell2 = new PdfPCell(new Phrase("machines")); 
table.addCell(cell1); 
table.addCell(cell2); 
// Data 
db = new Database(FirstActivity.this); 
Cursor c = db.getGroupsNamesMachines(); 
if (c.moveToFirst()) { 
    do { 
     String group = c.getString(c.getColumnIndex("groupname")); 
     cell1 = new PdfPCell(new Phrase(group)); 
     table.addCell(cell1); 
     String machine = c.getString(c.getColumnIndex("machinename")); 
     cell2 = new PdfPCell(new Phrase(machine)); 
     table.addCell(cell2); 
    } while (c.moveToNext()); 
} 
document.add(table); 

;

는이 같은 뭔가가 필요 데이터베이스에서 올바른 데이터를 얻는 방법을 아는 것은 사용자의 책임이지만 매우 비대칭 인 코드를 변경 한 논리 코드와 비교하십시오.

  • 먼저 헤더를 정의하고 테이블에 추가
  • 그런 다음 데이터에 루프 및 행하여 데이터 행을 추가,
  • 열이보다 행에 더 많은 셀을 추가하지 마십시오!
+0

정말 고마워요. 열/행이 어떻게 작동하는지 이해하기 위해 고심하고있었습니다. 당신이 만든 좋은 라이브러리;) – jose

+0

그리고 두 개가 아닌 동적 셀을 어떻게 얻을 수 있습니까? 나 좀 도와 줄 수있어? :/ – jose

+0

쿼리를 수행 할 때 각 레코드의 필드 수를 항상 알 수 있습니다. 필드 수와 함께 테이블을 정의해야합니다 :'new PdfPTable (numFields)'. iText가 필요한 열의 수를 "추측"할 수는 없으므로 직접 정의해야합니다. (그리고 * 그 정보가 있기 때문에 * 스스로 정의 할 수 있습니다.) –