dv.RowFilter

using System; using System.Data; using System.IO; using System.Linq; using System.Windows.Forms; using OfficeOpenXml; namespace ExcelQueryApp { public partial class MainForm : Form { private DataTable excelData = new DataTable(); public MainForm() { InitializeComponent(); // 设置EPPlus许可证上下文 ExcelPackage.LicenseContext = LicenseContext.NonCommercial; } private void btnOpenFile_Click(object sender, EventArgs e) { using (OpenFileDialog openFileDialog = new OpenFileDialog()) { openFileDialog.Filter = "Excel Files|*.xlsx;*.xls"; openFileDialog.Title = "Select an Excel File"; if (openFileDialog.ShowDialog() == DialogResult.OK) { txtFilePath.Text = openFileDialog.FileName; LoadExcelData(openFileDialog.FileName); } } } private void LoadExcelData(string filePath) { try { using (ExcelPackage package = new ExcelPackage(new FileInfo(filePath))) { if (package.Workbook.Worksheets.Count == 0) { MessageBox.Show("Excel文件中没有工作表。"); return; } ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; // 清空现有数据 excelData.Clear(); excelData.Columns.Clear(); // 读取列头 int colCount = worksheet.Dimension.End.Column; for (int col = 1; col <= colCount; col++) { excelData.Columns.Add(worksheet.Cells[1, col].Text); } // 读取数据行 int rowCount = worksheet.Dimension.End.Row; for (int row = 2; row <= rowCount; row++) { DataRow dataRow = excelData.NewRow(); for (int col = 1; col <= colCount; col++) { dataRow[col - 1] = worksheet.Cells[row, col].Text; } excelData.Rows.Add(dataRow); } dataGridView.DataSource = excelData; lblStatus.Text = $"已加载 {excelData.Rows.Count} 行数据"; } } catch (Exception ex) { MessageBox.Show($"加载Excel文件时出错: {ex.Message}"); } } private void btnSearch_Click(object sender, EventArgs e) { if (excelData.Rows.Count == 0) { MessageBox.Show("请先打开Excel文件。"); return; } string searchText = txtSearch.Text.Trim(); if (string.IsNullOrEmpty(searchText)) { dataGridView.DataSource = excelData; lblStatus.Text = $"显示全部 {excelData.Rows.Count} 行数据"; return; } // 创建数据视图并过滤 DataView dv = new DataView(excelData); string filterExpression = ""; foreach (DataColumn column in excelData.Columns) { if (filterExpression != "") filterExpression += " OR "; filterExpression += $"[{column.ColumnName}] LIKE '%{searchText}%'"; } dv.RowFilter = filterExpression; dataGridView.DataSource = dv; lblStatus.Text = $"找到 {dv.Count} 条匹配记录"; } private void btnClearSearch_Click(object sender, EventArgs e) { txtSearch.Text = ""; dataGridView.DataSource = excelData; lblStatus.Text = $"显示全部 {excelData.Rows.Count} 行数据"; } } }
最新发布
09-17
private void bt_import_rd_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(textEdit_rd_actual.Text) && !string.IsNullOrEmpty(textEdit_rd_2.Text)) { this.Cursor = Cursors.WaitCursor; //读取编辑好的更新文档 DataTable dt_actual = IoHelper.LoadExcelToDataTable(textEdit_rd_actual.Text); DataTable dt_type = IoHelper.LoadExcelToDataTable(textEdit_rd_2.Text); if (!Convert.IsDBNull(dt_actual) && !Convert.IsDBNull(dt_type)) { Boolean flag = false; for (int i = 0; i < dt_type.Columns.Count; i++) { if (dt_type.Columns[i].ColumnName == "Lot Type") { flag = true; break; } } if (flag) { ImportData(dt_actual, dt_type); } else { DevExpress.XtraEditors.XtraMessageBox.Show("传输数据不存在Lottype列 请Check!"); } } else { DevExpress.XtraEditors.XtraMessageBox.Show("传输数据为空 请Check!"); } this.Cursor = Cursors.Default; } else { DevExpress.XtraEditors.XtraMessageBox.Show("传输数据为空 请Check!"); } } private void ImportData(DataTable dt_actual, DataTable dt_type) { DataView dv = new DataView(dt_actual); DataTable dt_mon = dv.ToTable(true, "YEAR", "MONTH"); dt_mon.DefaultView.RowFilter = "year IS NOT NULL AND month IS NOT NULL"; dt_mon = dt_mon.DefaultView.ToTable(); string monthlist = ""; for (int i = 0; i < dt_mon.Rows.Count; i++) { monthlist += "'" + Convert.ToString(dt_mon.Rows[i]["YEAR"]) + Convert.ToString(dt_mon.Rows[i]["MONTH"]) + "',"; } monthlist = monthlist.Length == 0 ? monthlist : monthlist.Substring(0, monthlist.Length - 1); //删除所传数据月份数据 string sql_del = @" DELETE FROM icost_rd_detail WHERE idate IN(" + monthlist + @") "; DataTool.ExecuteSql(sql_del); DataTable dt_detail = new DataTable(); dt_detail.Columns.Add("COMPANY", typeof(string)); dt_detail.Columns.Add("ACCOUNT", typeof(string)); dt_detail.Columns.Add("DESCRIPTION", typeof(string)); dt_detail.Columns.Add("YEAR", typeof(string)); dt_detail.Columns.Add("MONTH", typeof(string)); dt_detail.Columns.Add("FAB", typeof(string)); dt_detail.Columns.Add("MOTHER_FAB", typeof(string)); dt_detail.Columns.Add("SUB_LOCATION", typeof(string)); dt_detail.Columns.Add("TRANSTYPE", typeof(string)); dt_detail.Columns.Add("COST_CENTER", typeof(string)); dt_detail.Columns.Add("PRODUCT_ID", typeof(string)); dt_detail.Columns.Add("LOTID", typeof(string)); dt_detail.Columns.Add("QTY", typeof(double)); dt_detail.Columns.Add("UNIT", typeof(string)); dt_detail.Columns.Add("PO_NO", typeof(string)); dt_detail.Columns.Add("PROJECT_CODE", typeof(string)); dt_detail.Columns.Add("ITEM_TEXT", typeof(string)); dt_detail.Columns.Add("AMOUNT", typeof(double)); dt_detail.Columns.Add("LOTTYPE", typeof(string)); dt_detail.Columns.Add("IDATE", typeof(string)); dt_detail.Columns.Add("SEQ", typeof(string)); int a = 0; foreach (DataRow dr in dt_actual.Rows) { if (!Convert.IsDBNull(dr[17])) { a++; dt_detail.Rows.Add(dr[0], dr[1], dr[2], dr[3], dr[4], dr[5], dr[6], dr[7], dr[8], dr[9], dr[10], dr[11], dr[12], dr[13], dr[14], dr[15], dr[16], dr[17], "", Convert.ToString(dr[3]) + Convert.ToString(dr[4]), a); } } dt_detail.DefaultView.RowFilter = "idate IS NOT NULL"; dt_detail = dt_detail.DefaultView.ToTable(); //删除已导入数据 string sql = @" truncate table icost_rd_detail_temp"; DataTool.ExecuteSql(sql); DataTable dt_temp = new DataTable(); dt_temp.Columns.Add("YEAR", typeof(string)); dt_temp.Columns.Add("MONTH", typeof(string)); dt_temp.Columns.Add("FAB", typeof(string)); dt_temp.Columns.Add("LOTTYPE", typeof(string)); dt_temp.Columns.Add("PRODUCT_ID", typeof(string)); dt_temp.Columns.Add("PROCESS", typeof(string)); dt_temp.Columns.Add("LOTID", typeof(string)); dt_temp.Columns.Add("QTY", typeof(double)); dt_temp.Columns.Add("AMOUNT", typeof(double)); dt_temp.Columns.Add("IDATE", typeof(string)); foreach (DataRow dr in dt_type.Rows) { if (!Convert.IsDBNull(dr[18]) && !Convert.IsDBNull(dr[10])) { dt_temp.Rows.Add(dr[0], dr[1], dr[2], dr[8], dr[9], dr[11], dr[10], dr[12], dr[18], Convert.ToString(dr[0]) + Convert.ToString(dr[1])); } } dt_temp.DefaultView.RowFilter = "idate IS NOT NULL"; dt_temp = dt_temp.DefaultView.ToTable(); int j = 0; if (dt_detail != null && dt_temp != null) { j = DataTool.BulkInsert("icost_rd_detail", dt_detail); j = j + DataTool.BulkInsert("icost_rd_detail_temp", dt_temp); } if (j >= 2) { DataTool.ExecuteProcedure("icost_prc_rd_update"); ccb_date_rd.Text = ""; dt_from_rd.Text = ""; dt_to_rd.Text = ""; SelectFilter_Load_RD(); DevExpress.XtraEditors.XtraMessageBox.Show("RD相关数据保存成功"); } else { DevExpress.XtraEditors.XtraMessageBox.Show("RD相关数据保存失败!请联系开发人员"); } } 解释代码
08-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值