У меня есть Создать отчет в android.so, у меня есть JSON
данные, показанные в Таблице с использованием itext-pdf
. У меня Json
парсинг с использованием retrofit2 и rxjava2.
В Json
Первый формат - Ключ "FirmName"
. FirmName
значение ключа совпадает с его объектом
данные отображаются в одной таблице, но когда значение FirmName
изменяется, тогда его собственные данные объекта динамически отображаются в другой таблице.
Я не FirmName
изменяю значение, когда данные отображаются в другой таблице?
JSON Формат:
{
"status": 1,
"0": [
{
"Cmp_Name": "ABC",
"Partyid": "18",
"ChallanNo": "-",
"PartyName": "PURCHASE GJ",
"FirmName": "PURCHASE GJ",
"ChallanDate": "-",
"ChallanAmount": "0.0",
"RecieveDate": "2019-03-15 00:00:00",
"RecieveAmount": "4000.0",
"DiscountAmount": "0.0",
"TDSAmount": "0.0",
"Bank": "AXIS BANK",
"ChequeNo": null,
"ChequeDate": null
},
{
"Cmp_Name": "ABC",
"Partyid": "17",
"ChallanNo": "20",
"PartyName": "PURCHASE GJ",
"FirmName": "PURCHASE GJ",
"ChallanDate": "3/11/2019",
"ChallanAmount": "1391.0",
"RecieveDate": "2019-03-15 00:00:00",
"RecieveAmount": "1391.0",
"DiscountAmount": "0.0",
"TDSAmount": "0.0",
"Bank": "AXIS BANK",
"ChequeNo": "321456",
"ChequeDate": "2019-03-15 00:00:00"
},
{
"Cmp_Name": "ABC",
"Partyid": "17",
"ChallanNo": "20",
"PartyName": "Dharama",
"FirmName": "Dharama",
"ChallanDate": "3/11/2019",
"ChallanAmount": "1391.0",
"RecieveDate": "2019-03-15 00:00:00",
"RecieveAmount": "1391.0",
"DiscountAmount": "0.0",
"TDSAmount": "0.0",
"Bank": "AXIS BANK",
"ChequeNo": "321456",
"ChequeDate": "2019-03-15 00:00:00"
},
{
"Cmp_Name": "ABC",
"Partyid": "17",
"ChallanNo": "20",
"PartyName": "Dharama",
"FirmName": "Dharama",
"ChallanDate": "3/11/2019",
"ChallanAmount": "1391.0",
"RecieveDate": "2019-03-15 00:00:00",
"RecieveAmount": "1391.0",
"DiscountAmount": "0.0",
"TDSAmount": "0.0",
"Bank": "AXIS BANK",
"ChequeNo": "321456",
"ChequeDate": "2019-03-15 00:00:00"
}
]
}
Выше JSON
Формат FirmName
два значения одинаковы, а два значения различны.
FirmName
То же значение - PURCHASE GJ, его собственные данные объекта отображаются в одной таблице, а данные значения Dharma - в другой таблице. как его показать?
Ниже приведен код данных в одной таблице в itext pdf
, но я не знаю, как создать еще одну таблицу, зависит от изменения значения ключа.
Json
Отображение данных itxet pdf
в табл.
Все JSON
данные отображают одну таблицу под кодом, но как создать таблицы зависит JSON
Ключ "PartyName
" таблицы изменения значений создаются?
Я использую retrofit2 и rxjava2 для анализа JSON
данных.
Я должен разделить данные в таблице.
"PartyName
" - это клавиша JSON
. Значение «PartyName
» совпадает с отображением одной таблицы, когда «PartyName
» изменяет отображение данных объекта в другой таблице.
PartyName
Значение изменить свои новые данные отображения новой таблицы.
Как его больше таблицы создать в itext pdf
, пожалуйста, ведите меня?
Какие-либо другие инструменты отчетности доступны для Android?
Одна таблица создана в itext pdf
, но я хочу выше JSON
Ключ данных "PartyName
" Изменить показ данных в другой таблице.
ниже кода - другой код данных, не выше Json
кода данных.
fun pdfViewer(purchaseOut: List, fDate : String, tDate : String, todayDate : String) {
val document = Document()
try {
val SDCardRoot = Environment.getExternalStorageDirectory()
val dir = File(SDCardRoot.getAbsolutePath() + dirPath)
if (!dir.exists()) {
dir.mkdirs()
}
val d = Date()
val s = DateFormat
.format("yyyyMMdd", d.getTime())
val ran = java.util.Random()
var n = 10000
n = ran.nextInt(n)
//var file = File(dir, ".pdf")
//val targetPdf = "/sdcard/pdffromlayout.pdf"
// val targetPdf = file
val pathName: String = "purchaseOut" + s + ".pdf"
val filePath: File
filePath = File(dir, pathName)
val docWriter = PdfWriter.getInstance(document, FileOutputStream(filePath))
document.open()
val cb = docWriter.getDirectContent()
initializeFonts()
createHeadings(cb, 260F, 780F, companyName )
createHeadings(cb, 190F, 765F, "Party Wise Purchase Pending Report(Summary)")
//createHeadings(cb, 265F, 750F, "GST IN : "+ salesGSt.get(1).GSTIN)
createHeadings(cb, 35F, 660F, "Date : "+todayDate)
createHeadings(cb, 327F, 660F, "From Date :" +fDate)
createHeadings(cb, 439F, 660F, "To Date :"+tDate)
/* var header = PdfPTable(1)
var cellHeader = PdfPCell(Phrase("CompanyName"))
header.setHorizontalAlignment(Element.ALIGN_CENTER)
// cellHeader.setName("Hi")
header.addCell(cellHeader)
header.setWidthPercentage(100F)*/
val columnWidths = floatArrayOf(0.75f, 5f, 2f, 2f, 2.5f, 2f, 2.5f)
//var cell : PdfPCell
var table = PdfPTable(columnWidths)
table.setTotalWidth(500f)
var cell = PdfPCell(Phrase("Sr.No"))
cell.setHorizontalAlignment(Element.ALIGN_RIGHT)
table.addCell(cell)
cell = PdfPCell(Phrase("Party Name"))
cell.setHorizontalAlignment(Element.ALIGN_LEFT)
table.addCell(cell)
cell = PdfPCell(Phrase("Opening Balance"))
cell.setHorizontalAlignment(Element.ALIGN_LEFT)
table.addCell(cell)
cell = PdfPCell(Phrase("Bill Amount"))
cell.setHorizontalAlignment(Element.ALIGN_RIGHT)
table.addCell(cell)
cell = PdfPCell(Phrase("Rcv Amount"))
cell.setHorizontalAlignment(Element.ALIGN_RIGHT)
table.addCell(cell)
cell = PdfPCell(Phrase("Other Amount"))
cell.setHorizontalAlignment(Element.ALIGN_RIGHT)
table.addCell(cell)
cell = PdfPCell(Phrase("Closing Balance"))
cell.setHorizontalAlignment(Element.ALIGN_RIGHT)
table.addCell(cell)
table.setHeaderRows(1)
val df = DecimalFormat("0.00")
for (j in 0 until purchaseOut.size) {
val price = java.lang.Double.valueOf(df.format(Math.random() * 10))
// val extPrice = price * (i + 1)
/*val inputFormatter1 = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
val date1 = inputFormatter1.parse(salesGSt.get(j).ChallanDate)
val outputFormatter1 = SimpleDateFormat("dd-MMM-yyyy")
var bill_date = outputFormatter1.format(date1)*/
if (purchaseOut.get(j).FirmName != null) {
partyName = purchaseOut.get(j).FirmName!!
} else {
partyName = ""
}
if (purchaseOut.get(j).Balance != null) {
openingBalance = purchaseOut.get(j).Balance!!
} else {
openingBalance = ""
}
if (purchaseOut.get(j).CR != null) {
billAmount = purchaseOut.get(j).CR!!
} else {
billAmount = ""
}
if (purchaseOut.get(j).DB != null) {
rcvAmt = purchaseOut.get(j).DB!!
} else {
rcvAmt = ""
}
if (purchaseOut.get(j).OtherAmt != null) {
otherAmt = purchaseOut.get(j).OtherAmt!!
} else {
otherAmt = ""
}
if (purchaseOut.get(j).ClBalance != null) {
cLBalance = purchaseOut.get(j).ClBalance!!
} else {
cLBalance = ""
}
table.addCell((j + 1).toString())
table.addCell(partyName)
table.addCell(openingBalance)
table.addCell(billAmount)
table.addCell(rcvAmt)
table.addCell(otherAmt)
table.addCell(cLBalance)
//table.addCell(df.format(extPrice))
}
table.writeSelectedRows(0, -1, document.leftMargin(), 650F, docWriter.getDirectContent())
document.close()
openGeneratedPDF(pathName)
} catch (e: Exception) {
e.printStackTrace()
}
}
Может ли Android поддерживать инструменты отчетности или библиотеку?