Обновление столбца в excel из инструкции select
Привет,
У меня есть и sql trigger insert/update оператор на location master.
Я вставил данные триггера в таблицу locationmasterhistory, чтобы отслеживать вставленные запасы.
Я создал консольное приложение, чтобы получить данные таблиц locationmasterhistory для экспорта в excel. В locationmasterhistory есть столбец export = "No". Поэтому, когда я экспортирую данные в excel, в кодировке я хочу изменить столбец на "Да". Пожалуйста, помогите мне.
Что я уже пробовал:
Это мой код в консольном приложении :
static void Main(string[] args) { string connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings["IntegrationConnection"].ConnectionString; //Location Sheet string sql1 = null; string data = null; int i = 0; int j = 0; string Filename = @"D:\Integration\Location" + DateTime.Now.ToString("ddMMyyyy HHmmss") + ".xls"; //string Filename = @"D:\Integration\Location.xls"; if (!File.Exists(Filename)) { File.Create(Filename).Dispose(); using (TextWriter tw = new StreamWriter(Filename)) { tw.WriteLine("Please run the program again"); tw.Close(); } } ////*** Preparing excel Application Excel.Application xlApp; Excel.Workbook xlWorkBook; Excel.Worksheet xlWorkSheet; object misValue = System.Reflection.Missing.Value; ///*** Opening Excel application xlApp = new Microsoft.Office.Interop.Excel.Application(); xlWorkBook = xlApp.Workbooks.Open(Filename); xlWorkSheet = (Excel.Worksheet)(xlWorkBook.ActiveSheet as Excel.Worksheet); xlApp.DisplayAlerts = false; SqlConnection conn = new SqlConnection(connectionstring); conn.Open(); sql1 = "SELECT * from tblCompBranchHistory where export = 'N'"; ///*** Preparing to retrieve value from the database DataTable dtable = new DataTable(); SqlDataAdapter dscmd = new SqlDataAdapter(sql1, conn); DataSet ds = new DataSet(); dscmd.Fill(dtable); ////*** Generating the column Names here string[] colNames = new string[dtable.Columns.Count]; int col = 0; foreach (DataColumn dc in dtable.Columns) colNames[col++] = dc.ColumnName; char lastColumn = (char)(65 + dtable.Columns.Count - 1); xlWorkSheet.get_Range("A1", lastColumn + "1").Value2 = colNames; xlWorkSheet.get_Range("A1", lastColumn + "1").Font.Bold = true; xlWorkSheet.get_Range("A1", lastColumn + "1").VerticalAlignment = Excel.XlVAlign.xlVAlignCenter; /////*** Inserting the Column and Values into Excel file for (i = 0; i <= dtable.Rows.Count - 1; i++) { for (j = 0; j <= dtable.Columns.Count - 1; j++) { data = dtable.Rows[i].ItemArray[j].ToString(); xlWorkSheet.Cells[i + 2, j + 1] = data; xlWorkBook.Save(); } } xlWorkBook.Close(true, misValue, misValue); xlApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkSheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
}
Garth J Lancaster
Это не сразу очевидно, где находится locationmasterhistory .. ваш код, кажется, показывает вам загрузку из таблицы базы данных tblCompBranchHistory в таблицу данных в excel.
Очевидный ответ, в общем случае, заключается в том, чтобы использовать уникальные идентификаторы из таблицы данных для tblCompBranchHistory и построить параматериализованный запрос к
update locationmasterhistory set export = "yes" where ID in [list]но я не уверен на 100% в вашей схеме
кстати, я предлагаю обновить его по "ID", потому что при таком малом количестве информации, как вы показали, неограниченное обновление locationmasterhistory может быть опасным
Member 12611727
Привет, но я не хочу обновлять таблицу, я хочу обновить столбец excel export = "yes". До или после экспорта в excel я хочу видеть столбец excel как Yes.
DerekT-P
так что это не имеет никакого отношения к оператору select; вам просто нужен столбец, который говорит "Да"... ? Итак, после "колонки" для..next, xlWorkSheet.Ячейки[i + 2, dtable.Столбцы.Count] = "Yes"; (предполагая, что столбец yes/no находится непосредственно справа от столбца данных). Кстати, вы сохраняете всю книгу после обновления каждой ячейки; прекрасно, если возвращается несколько строк, но, вероятно, не так уж и здорово, если их несколько десятков тысяч...! Возможно, мы вас неправильно поняли, но вы так и не объяснили, что именно пытаетесь сделать.