Рейтинг:
2
Pradeep Arthanari
Вы должны добавить тип вашей команды в качестве текстового типа(ниже строки) в вашем методе ReadFile() :
Oledbcmd.CommandText = "Select SIGNAL,ROUTE_BUTTON from [CONTROL_TABLE$]";
Oledbcmd.CommandType = CommandType.Text;
Arvi.S
Добавлено, но эффекта нет!
Pradeep Arthanari
Вы можете попробовать это:
public string connString;
DataTable schemaTable;
DataTable ContentTable;
private void button1_Click(object sender, EventArgs e)
{
string filePath = string.Empty;
string fileExt = string.Empty;
string fileName = "D:\\00Latitude\\00InfyTFS\\Standard Interface\\ExcelRepository\\GPB 14-4-17.xls";
connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";
DataTable schemaTable = ReadFile();
routeNamesListView.Columns.Add("IPCNODEID");
routeNamesListView.Columns.Add("IPC");
for (int i = 0; i < schemaTable.Rows.Count; i++)
{
DataRow drow = schemaTable.Rows[i];
// Only row that have not been deleted
if (drow.RowState != DataRowState.Deleted)
{
// Define the list items
ListViewItem lvi = new ListViewItem(drow[0].ToString());
for (int j = 1; j < schemaTable.Columns.Count; j++)
{
lvi.SubItems.Add(drow[j].ToString());
}
routeNamesListView.Items.Add(lvi);
}
}
routeNamesListView.View = View.Details;
routeNamesListView.CheckBoxes = true;
}
private DataTable ReadFile()
{
OleDbConnection conn = new OleDbConnection(connString);
schemaTable = new DataTable();
OleDbCommand Oledbcmd = new OleDbCommand();
Oledbcmd.Connection = conn;
conn.Open();
Oledbcmd.CommandText = "Select IPCNODEID,IPC from [daily data$]";
Oledbcmd.CommandType = CommandType.Text; //--------------
OleDbDataAdapter da = new OleDbDataAdapter(Oledbcmd);
ContentTable = new DataTable();
da.Fill(ContentTable);
OleDbDataReader dr = Oledbcmd.ExecuteReader();
dr.Close();
conn.Close();
conn.Dispose();
return ContentTable;
}
Arvi.S
Спасибо, Прадип!! Приведенный выше код работает хорошо. Но из двух столбцов в listview отображается только значение первого столбца(сигнал), а значение следующего столбца(ROUTE_BUTTON) не отображается.
Pradeep Arthanari
Проверьте, правильно ли заполнены значения ROUTE_BUTTON в schemaTable. Если он есть в schemaTable, он должен отображаться в списке, а также убедитесь, что у вас есть routeNamesListView.View установлен в положение View.Details.
routeNamesListView.View = View.Details;
Рейтинг:
1
Karthik_Mahalingam
удалите эту строку
ContentTable = null;
Arvi.S
Попробовал снять его.
Кроме того, я удалил "schemaTable = new DataTable" из функции read file, так как она никогда не используется.
Но никакого эффекта нет!
Karthik_Mahalingam
еще получаю null или пустой стол ?
Arvi.S
можно получить столбец, количество строк таблицы содержимого в функции DataTable ReadFile. Но те же самые значения таблицы содержимого не могли быть замечены в событии нажатия кнопки.
Примечание:
В кнопка событие, я поменял объект DataTable schemaTable = слотом ReadFile(); в DataTable ContentTable = слотом ReadFile();
Karthik_Mahalingam
пробовать
string GetConnString(string path)
{
string connString = "";
string extrn = Path.GetExtension(path);
if (extrn == ".xlsx")
connString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + path + "';Extended Properties='Excel 12.0;HDR=YES;IMEX=1'"; //for above excel 2007
else
connString = @"provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'"; //for below excel 2007
return (connString);
}
private DataTable ReadFile(string path)
{
DataTable dt = new DataTable();
string conString = GetConnString(path);
using (OleDbConnection con = new OleDbConnection(conString))
{
string query = "Select SIGNAL,ROUTE_BUTTON from [CONTROL_TABLE$]";
OleDbCommand Oledbcmd = new OleDbCommand(query, con);
OleDbDataAdapter da = new OleDbDataAdapter(Oledbcmd);
da.Fill(dt);
}
return dt;
}
private void t1NextTabRedirectButton_Click(object sender, EventArgs e)
{
DataTable schemaTable = ReadFile("C:\\gui_Files\\ICT_LAYOUT_AJJ.xlsx");
}
Arvi.S
Попробовал вышеприведенный код Mr. Karthick, но с той же проблемой я столкнулся.
Ошибок нет, но я не получил вывода.
Одну вещь я заметил при отладке вашего кода.
Количество столбцов и строк в da.Fill(dt) равно нулю.