Ejemplo n.º 1
0
        public string CreateTableauDataExtract(DataTable dataTable, string file)
        {
            Extract output = new Extract(file);

            // initialize the extract object, which we will output
            using (output)
                // create a new Tableau table based on the DataTable
                using (Tableau.TableDefinition tableDefinition = new Tableau.TableDefinition())
                {
                    // ForEach Column
                    foreach (DataColumn dc in dataTable.Columns)
                    {
                        string      columnName       = dc.ColumnName;
                        System.Type columnType       = dc.DataType;
                        string      columnTypeString = columnType.ToString();

                        switch (columnTypeString)
                        {
                        case "System.String":
                            tableDefinition.AddColumn(columnName, Tableau.Type.Type_UnicodeString);
                            break;

                        case "System.DateTime":
                            tableDefinition.AddColumn(columnName, Tableau.Type.Type_DateTime);
                            break;

                        case "System.Int32":
                            tableDefinition.AddColumn(columnName, Tableau.Type.Type_Integer);
                            break;

                        case "System.Double":
                            tableDefinition.AddColumn(columnName, Tableau.Type.Type_Double);
                            break;

                        case "System.Decimal":
                            tableDefinition.AddColumn(columnName, Tableau.Type.Type_Double);
                            break;

                        case "System.Boolean":
                            tableDefinition.AddColumn(columnName, Tableau.Type.Type_Boolean);
                            break;
                        }
                    }

                    Tableau.Table table = output.AddTable("Extract", tableDefinition);

                    // loop through each row
                    foreach (DataRow dr in dataTable.Rows)
                    {
                        Row row = new Row(tableDefinition);

                        // loop through each column while in the row
                        foreach (DataColumn dc in dataTable.Columns)
                        {
                            object value = dr[dc.ColumnName];

                            string      columnName       = dc.ColumnName;
                            System.Type columnType       = dc.DataType;
                            string      columnTypeString = columnType.ToString();


                            if (!string.IsNullOrWhiteSpace(value.ToString()))
                            {
                                switch (columnTypeString)
                                {
                                case "System.String":
                                    row.SetString(dc.Ordinal, value.ToString());
                                    break;

                                case "System.DateTime":
                                    DateTime dateValue = DateTime.Parse(value.ToString());
                                    row.SetDateTime(dc.Ordinal, dateValue.Year, dateValue.Month, dateValue.Day, dateValue.Hour, dateValue.Minute, dateValue.Second, dateValue.Millisecond);
                                    break;

                                case "System.Int32":
                                    row.SetInteger(dc.Ordinal, Convert.ToInt32(value.ToString()));
                                    break;

                                case "System.Double":
                                    row.SetDouble(dc.Ordinal, Convert.ToDouble(value.ToString()));
                                    break;

                                case "System.Decimal":
                                    row.SetDouble(dc.Ordinal, Convert.ToDouble(value.ToString()));
                                    break;

                                case "System.Boolean":
                                    row.SetBoolean(dc.Ordinal, Convert.ToBoolean(value.ToString()));
                                    break;
                                }
                            }
                        }
                        table.Insert(row);
                    }
                }
            return(file);
        }