Ошибка создания таблицы с данными от mysql до raport / pdf / word C# - PullRequest
0 голосов
/ 27 января 2020

Как я могу создать таблицу с данными из mysql в raport или pdf или текстовый документ в C# с WPF? Я пытаюсь использовать iTextSharp, но я не могу создать таблицу со своими данными из mysql. Все учебные пособия и решения, относящиеся к формам windows, имеют другую реализацию.

Я использую это для подключения моих данных из mysql в DataGrid:

query = "select * from provider;";
MySqlCommand command = new MySqlCommand(query, connection);
MySqlDataAdapter adapter = new MySqlDataAdapter(command);
dataSet = new DataSet();
adapter.Fill(dataSet, "LoadDataBinding");
DataGridProvider.DataContext = dataSet;

И я хочет создать в RAPORT / PDF / WORD таблицу, похожую на эту:

<DataGrid Grid.Row="2" Name="DataGridProvider" 
                       Height="370" Width="auto" 
                       Margin="20,20,20,10" 
                       SelectionChanged="DataGridProvider_SelectionChanged" 
                       ItemsSource="{Binding Path=LoadDataBinding}" 
                       AutoGenerateColumns="False" IsReadOnly="True">
   <DataGrid.Columns>
       <DataGridTextColumn Header="Id" Binding="{Binding id_provider}" Visibility="Collapsed"/>
       <DataGridTextColumn Width="130" Header="Name" Binding="{Binding name_provider}"/>
       <DataGridTextColumn Width="110" Header="NIP" Binding="{Binding nip}"/>
       <DataGridTextColumn Width="110" Header="City" Binding="{Binding city}"/>
       <DataGridTextColumn Width="110" Header="Street" Binding="{Binding street}"/>
       <DataGridTextColumn Width="110" Header="House number" Binding="{Binding houseNumber}"/>
       <DataGridTextColumn Width="110" Header="Phone number" Binding="{Binding phoneNumber}"/>
       <DataGridTextColumn Width="110" Header="Bank" Binding="{Binding bankAccount}"/>
   </DataGrid.Columns>
</DataGrid>

РЕДАКТИРОВАТЬ Я решил свою проблему! Измените набор данных на datatable и используйте этот код, и это работает!

private void ExportToPDF()
        {
            connection.Open();
            string query = "select * from provider;";
            MySqlCommand command = new MySqlCommand(query, connection);
            MySqlDataAdapter adapter = new MySqlDataAdapter(command);
            DataTable dataTable = new DataTable();
            adapter.Fill(dataTable);

            Document document = new Document();
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"E:\test1.pdf", FileMode.Create));
            document.Open();

            PdfPTable table = new PdfPTable(dataTable.Columns.Count);
            table.WidthPercentage = 100;

            for (int k = 0; k < dataTable.Columns.Count; k++)
            {
                PdfPCell cell = new PdfPCell(new Phrase(dataTable.Columns[k].ColumnName));

                cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;
                cell.VerticalAlignment = PdfPCell.ALIGN_CENTER;
                cell.BackgroundColor = new iTextSharp.text.BaseColor(51, 102, 102);

                table.AddCell(cell);
            }

            for (int i = 0; i < dataTable.Rows.Count; i++)
            {
                for (int j = 0; j < dataTable.Columns.Count; j++)
                {
                    PdfPCell cell = new PdfPCell(new Phrase(dataTable.Rows[i][j].ToString()));

                    //Align the cell in the center
                    cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;
                    cell.VerticalAlignment = PdfPCell.ALIGN_CENTER;

                    table.AddCell(cell);
                }
            }
            document.Add(table);
            document.Close();
            connection.Close();
        }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...