private static void write_worksheet(DataSource datasource, Formats.ExcelXMLWriter writer, string sheetname, bool write_column_headers) { var schema = datasource.GetSchema(); int num_cols = schema.Fields.Count; var datatypes = Enumerable.Repeat(Formats.ExcelXMLWriter.DataType.String, num_cols).ToArray(); for (int i = 0; i < num_cols; i++) { var col = schema.Fields[i]; if (col.Type == typeof(System.DateTime)) { datatypes[i] = Formats.ExcelXMLWriter.DataType.DateTime; } } writer.StartWorkSheet(sheetname, num_cols, datatypes); if (write_column_headers) { writer.StartRow(); foreach (var col in schema.Fields) { var cn = col.Name; var cdt = Formats.ExcelXMLWriter.DataType.String; writer.Cell(cn, cdt); } writer.EndRow(); } var excel_datatypes = schema.Fields.AsEnumerable().Select(col => DataUtil.getdt(col.Type)).ToList(); foreach (var row in datasource.Rows) { writer.StartRow(); for (int i = 0; i < row.ItemArray.Length; i++) { var datatable_col = schema.Fields[i]; var excel_dt = excel_datatypes[i]; var item = row.ItemArray[i]; string cell_str = Isotope.Data.DataUtil.DataTableToExcelXML_get_cellstr(item, excel_dt, datatable_col); writer.Cell(cell_str, excel_dt); } writer.EndRow(); } writer.EndWorkSheet(); }