Получайте данные из SQL вместе с чтением excel на языке C#
Привет, у меня есть программа, которая может импортировать файл excel в datatable binding с помощью datagridview. В настоящее время мне нужно добавить еще одно имя столбца InvtID и получить эти данные InvtID из sql на основе столбца штрих-кода, который я импортировал.
Как я могу достичь этого, поскольку прямо сейчас мое кодирование может получить данные после импорта excel, поэтому данные столбца не находятся рядом со столбцом штрих-кода. Это единственная проблема, с которой я сталкиваюсь, чтобы закончить эту задачу, пожалуйста, помогите мне.
Что я уже пробовал:
public void filldatagridview(ExcelWorksheet workSheet) { DataTable dt = new DataTable(); //Create the data column for (int col = workSheet.Dimension.Start.Column; col <= workSheet.Dimension.End.Column; col++) { dt.Columns.Add(col.ToString()); } for (int row = 12; row <= 26; row++) { DataRow newRow = dt.NewRow(); //Create a row int i = 0; for (int col = workSheet.Dimension.Start.Column; col <= workSheet.Dimension.End.Column; col++) { newRow[i++] = workSheet.Cells[row, col].Text; } dt.Rows.Add(newRow); } dt.Columns.RemoveAt(0); //remove No dt.Columns.RemoveAt(0); //remove article //Get BookCode using (SqlConnection conn = new SqlConnection("Server")) using (SqlCommand cmd = new SqlCommand(null, conn)) { StringBuilder sb = new StringBuilder("WITH cte AS(SELECT case WHEN InvtID IS NULL OR InvtID='' THEN 'No Bookcode Found' ELSE InvtID END AS InvtID,Barcode,ROW_NUMBER() OVER(PARTITION BY Barcode ORDER BY InvtID Asc) rid FROM InventoryCustomer) SELECT InvtID AS BOOKCODE FROM cte WHERE rid=1 and Barcode In ("); for (int i = 0; i < dt.Rows.Count; i++) { if (i != 0) sb.Append(","); string name = "@P" + i; cmd.Parameters.AddWithValue(name, dt.Rows[i]["3"]); //"3" is barcode column sb.Append(name); } sb.Append(") ORDER BY Barcode Asc"); cmd.CommandText = sb.ToString(); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(dt); dt.Columns["BOOKCODE"].SetOrdinal(0); dataGridView2.DataSource = dt; } }