Пример #1
0
        /// <summary>
        /// Записывает данные страницы на текущий лист XLS-файла.
        /// </summary>
        /// <param name="table">Таблица с данными.</param>
        /// <param name="xlsFile">XLS-файл.</param>
        private static void WriteDataTable(DataTable table, XlsFile xlsFile)
        {
            // установить имя листа
            xlsFile.SheetName = table.TableName;

            // записать названия столбцов
            for (int i = 0; i < table.Columns.Count; ++i)
            {
                // название столбца
                xlsFile.SetCellValue( 1, i + 1, table.Columns[i].ColumnName );
                // .NET-тип данных столбца
                xlsFile.SetCellValue( 2, i + 1, table.Columns[i].DataType.ToString() );
            }
            // скрыть строку с типами данных
            xlsFile.SetRowHidden( 2, true );

            // записать данные таблицы
            int rowFrom = 3;
            for (int row = 0; row < table.Rows.Count; ++row)
            {
                object[] values = table.Rows[row].ItemArray;
                for(int col = 0; col < values.Length; ++col)
                {
                    object val = values[col];
                    if(val != DBNull.Value)
                    {
                        if(table.Columns[col].DataType == typeof( byte[] ))
                        {
                            Image image = Image.FromStream( new MemoryStream( (byte[])ConvertValue( val ) ) );
                            xlsFile.AddImage( row + rowFrom, col + 1, image );
                        }
                        else
                        {
                            xlsFile.SetCellValue( row + rowFrom, col + 1, ConvertValue( val ) );
                        }
                    }
                }
            }
        }