Я создаю таблицу в PDF с помощью iTextsharp. Я хочу сортировать таблицу по ее столбцам.Как отсортировать таблицу в pdf с помощью itextsharp
.
Когда я нажимаю на первый столбец, он должен сортироваться в алфавитном порядке, второй столбец должен сортировать по дате по порядку (по возрастанию), а третий/четвертый столбцы должны сортироваться в порядке номеров (по возрастанию). Вот мой код:
public void createPdf(string filestream)
{
FileStream outputStream = new FileStream(filestream, FileMode.Create,FileAccess.Write);
Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.GetInstance(document, outputStream);
document.Open();
PdfPTable table = createtable();
document.Add(table);
document.Close();
}
public PdfPTable createtable()
{
PdfPTable table = new PdfPTable(4);
float[] widths = new float[] { 2f, 1f,1f, 1f};
table.SetTotalWidth(widths);
PdfPCell cell;
//First Row
cell = new PdfPCell(new Phrase("Title"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("Date"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("Time"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("Year"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
//Second Row
cell = new PdfPCell(new Phrase("The Counterfeiters"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("01/01/2007"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("09:30"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("2007"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
//Third Row
cell = new PdfPCell(new Phrase("Requiem for a Dream"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("02/01/2000"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("11:30"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("2000"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
//Fourth Row
cell = new PdfPCell(new Phrase("Cinema Paradiso"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("12/01/1988"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("20:00"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("1988"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
//Fifth Row
cell = new PdfPCell(new Phrase("About Last Night"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("15/10/1986"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("27:00"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("1986"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
//Sixth Row
cell = new PdfPCell(new Phrase("Sixteen Candles"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("11/09/1984"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("22:30"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
cell = new PdfPCell(new Phrase("1984"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);
return table;
}
Я не знаю, как это реализовать.
Обычно * итерационные данные * (список, таблица, файл и т. Д.) Обрабатываются в цикле ('for',' foreach', 'while' и т. Д.). Затем сортировка данных перед выводом - это то, что вы хотите (и ее легко сортировать, например, «Список <>»). В настоящее время вы выводите данные вручную, и они будут отображаться в этом точном порядке и для их сортировки вам нужно сортировать строки в исходном файле. – Sinatr
Как сказал @Sinatr, возможно, вы должны отсортировать данные перед созданием таблицы. С другой стороны, возможна ли динамическая сортировка pdf-таблицы без каких-либо дыма и зеркал? (Создание скрытых страниц со всеми возможными сортировками, а затем гиперсвязь из столбцов таблицы на такие страницы) – ARdC