C# listbox & excel 如何删除 excel 中的信息
本文关键字:excel 删除 信息 何删除 listbox amp | 更新日期: 2023-09-27 18:34:53
所以我用列表框和按钮1(更新(通知,所以当我按按钮1时,它会打开Excel文档,找到我需要的信息并填充列表框。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
string FName = @"c:'TEST'data.xlsx";
var excelApp = new Excel.Application();
excelApp.Visible = true;
Excel.Workbook excelbk = excelApp.Workbooks._Open(FName,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
Excel.Worksheet xlSht = (Excel.Worksheet)excelbk.Worksheets["Sheet1"];
//find Column Number
//Now find Test in Row 1
Excel.Range column = (Excel.Range)xlSht.Columns[1, Type.Missing];
string FindWhat = "name";
bool MatchCase = true;
Excel.Range FindResults = column.Find(FindWhat, Type.Missing,
Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlWhole,
Excel.XlSearchOrder.xlByColumns, Excel.XlSearchDirection.xlNext,
MatchCase, Type.Missing, Type.Missing);
int colNumber = FindResults.Column;
//Get Last Row of Data
Excel.Range xlRange = (Excel.Range)xlSht.get_Range("A" + xlSht.Rows.Count, Type.Missing);
int LastRow = xlRange.get_End(Microsoft.Office.Interop.Excel.XlDirection.xlUp).Row;
//start update
listBox1.BeginUpdate();
//read data into form
string CellData;
for (int RowCount = 2; RowCount <= LastRow; RowCount++)
{
xlRange = (Excel.Range)xlSht.Cells[RowCount, colNumber];
CellData = (string)xlRange.Text;
listBox1.Items.Add(CellData);
}
//end update
listBox1.EndUpdate();
object SaveChanges = (object)false;
excelbk.Close(SaveChanges, Type.Missing, Type.Missing);
excelApp.Quit();
excelApp = null;
}
}
}
我现在想做的是删除按钮,以便用户选择其中一个名称,对于删除按钮,删除具有选定名称的行中的所有信息,例如单元格 A2 包含列表框中显示的名称,当用户点击删除按钮时,它会删除第 2 行中的所有信息。
你可以找到使用WorksheetFunction.Match函数来获取用户所在的行,从那里你应该能够删除该行。
double Match(
Object Arg1,
Object Arg2,
Object Arg3
)
参数
参数1类型:系统对象Lookup_value - 用于在表中查找所需值的值。
参数2类型:系统对象Lookup_array - 包含可能的查找值的连续单元格区域。Lookup_array必须是数组或数组引用。
Arg3类型:系统对象Match_type - 数字 -1、0 或 1。Match_type指定 Excel Microsoft如何lookup_value与lookup_array中的值进行匹配。
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.worksheetfunction.match.aspx
额外的东西:本着更有用的精神,假设您的 excel 工作表在第一行中有列标题,在第一列中有名称,从第 2 行开始。所以像这样,
第 1 行:名称
第 2 行:史蒂夫
第 3 行:约翰
第 4 行:亚当
第 5 排:兰迪
如果使用 Match("Adam", A2:A5, 0)
,则返回值将为 3,因为在 A2:A5 的范围内,它是第 3 行,因此您实际要删除的行是 4。必须解释这些事情。您可以在您的范围内包括 A1,这在大多数情况下都有效。