private void sheetComboBox_SelectedIndexChanged(object sender, EventArgs e) { ExcelBibliographicReader read = new ExcelBibliographicReader(); try { // Make sure there is a filename and a sheet name if ((fileTextBox.Text.Length > 0) && (sheetComboBox.SelectedIndex >= 0)) { read.Sheet = sheetComboBox.Text; read.Filename = fileTextBox.Text; // Try reading data from the selected Excel Worksheet if (!read.Check_Source()) { MessageBox.Show("Unable to read the source sheet "); fileTextBox.Text = String.Empty; filename = String.Empty; sheetComboBox.Items.Clear(); sheetComboBox.Text = String.Empty; sheetComboBox.Hide(); sheetLabel.Hide(); executeButton.Button_Enabled = false; } else { rawDataTbl = read.excelData; columnname_to_input.Clear(); foreach (DataColumn thisColumn in rawDataTbl.Columns) { columnname_to_input[thisColumn.ColumnName.ToUpper().Trim()] = thisColumn.ColumnName.Trim(); thisColumn.ColumnName = thisColumn.ColumnName.ToUpper().Trim().Replace(" ",""); } if (!Transform_Data()) { fileTextBox.Text = String.Empty; filename = String.Empty; sheetComboBox.Items.Clear(); sheetComboBox.Text = String.Empty; sheetComboBox.Hide(); sheetLabel.Hide(); executeButton.Button_Enabled = false; } else { // Check to see if multiple bibids loaded string check_bib = transformedDataTbl.Rows[0][0].ToString().ToUpper(); bool multiple_bibs_in_table = transformedDataTbl.Rows.Cast<DataRow>().Any(thisRow => thisRow[0].ToString().ToUpper() != check_bib); btnShowData.Location = new Point(239, 66); btnShowData.Show(); if ((bibidLabel.Visible) || ( multiple_bibs_in_table )) executeButton.Button_Enabled = true; } } // Close the reader read.Close(); } } catch (Exception ex) { ErrorMessageBox.Show(ex.Message, "Unexpected Error", ex); fileTextBox.Text = String.Empty; filename = String.Empty; sheetComboBox.Items.Clear(); sheetComboBox.Text = String.Empty; sheetComboBox.Hide(); sheetLabel.Hide(); executeButton.Button_Enabled = false; } finally { // Close the reader read.Close(); } }
private void Browse_Source() { fileTextBox.Text = String.Empty; filename = String.Empty; sheetComboBox.Items.Clear(); sheetComboBox.Text = String.Empty; sheetComboBox.Hide(); sheetLabel.Hide(); btnShowData.Hide(); executeButton.Button_Enabled = false; if (openFileDialog1.ShowDialog() == DialogResult.OK) { // Write the filename to the text box first fileTextBox.Text = openFileDialog1.FileName; filename = openFileDialog1.FileName; // Determine the filetype FileInfo fileInfo = new FileInfo(filename); string extension = fileInfo.Extension.ToUpper(); if ((extension == ".XLS") || (extension == ".XLSX")) { ExcelBibliographicReader read = new ExcelBibliographicReader(); try { // Try getting the worksheet names from the selected workbook // Get the sheet names read = new ExcelBibliographicReader(); List<string> tables = read.GetExcelSheetNames(openFileDialog1.FileName); if (tables == null) { MessageBox.Show("Unable to read the source workbook. "); fileTextBox.Text = String.Empty; filename = String.Empty; } else { // Populate the combo box foreach (string thisSheetName in tables) sheetComboBox.Items.Add(thisSheetName); sheetComboBox.Show(); sheetLabel.Show(); } } catch (Exception ex) { ErrorMessageBox.Show(ex.Message, "Unexpected Error", ex); fileTextBox.Text = String.Empty; filename = String.Empty; } finally { // Close the reader read.Close(); } return; } // Check with CSV or TXT files if ((extension == ".CSV") || (extension == ".TXT")) { // Create the splitter to use string splitter = ","; if (extension == ".TXT") splitter = ",\t"; char[] splitter_chars = splitter.ToCharArray(); StreamReader text_reader = new StreamReader(filename); try { string line = text_reader.ReadLine(); if (line != null) { string[] split = line.Split(splitter_chars); int columns = 0; rawDataTbl = new DataTable(); columnname_to_input.Clear(); foreach (string topRowSplit in split) { if (topRowSplit.Length > 0) { columns++; rawDataTbl.Columns.Add(topRowSplit.ToUpper().Trim().Replace(" ", "")); columnname_to_input[topRowSplit.ToUpper().Trim().Replace(" ", "")] = topRowSplit.Trim(); } else { break; } } line = text_reader.ReadLine(); while (line != null) { split = line.Split(splitter_chars); DataRow newRow = rawDataTbl.NewRow(); for (int i = 0; (i < columns) && (i < split.Length); i++) { newRow[i] = split[i]; } rawDataTbl.Rows.Add(newRow); line = text_reader.ReadLine(); } } btnShowData.Location = new Point(73,67); btnShowData.Show(); if (bibidLabel.Visible) executeButton.Button_Enabled = true; } catch { MessageBox.Show("Input text file is in improper format"); fileTextBox.Text = String.Empty; filename = String.Empty; } text_reader.Close(); return; } // Type was invalid so just return fileTextBox.Text = String.Empty; filename = String.Empty; } }