如何在C#GUI中搜索Excel工作表?
我有这个密码如何在C#GUI中搜索Excel工作表?,c#,.net,excel,user-interface,C#,.net,Excel,User Interface,我有这个密码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace T
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TabeleExcel
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void cboSheet_SelectedIndexChanged(object sender, EventArgs e)
{
DataTable dt = tableCollection[cboSheet.SelectedItem.ToString()];
dataGridView1.DataSource = dt;
}
DataTableCollection tableCollection;
private void btnBrowse_Click(object sender, EventArgs e)
{
using(OpenFileDialog openFileDialog=new OpenFileDialog() { Filter="Excel|*.xls|Excel|*.xlsx" })
{
if(openFileDialog.ShowDialog()==DialogResult.OK)
{
txtFilename.Text = openFileDialog.FileName;
using(var stream=File.Open(openFileDialog.FileName, FileMode.Open, FileAccess.Read))
{
using (IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream))
{
DataSet result = reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable=(_)=>new ExcelDataTableConfiguration() { UseHeaderRow=true }
});
tableCollection = result.Tables;
cboSheet.Items.Clear();
foreach (DataTable table in tableCollection)
cboSheet.Items.Add(table.TableName);
}
}
}
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
}
}
该代码在.NET framework中创建了一个GUI,允许您上载.xls或.xlsx,Excel文件将显示为DataGrid视图。我实现了一个新的textbox(textBox1_TextChanged(objectsender,EventArgs e)方法),基于用户的输入,我希望它只显示与输入相对应的行。我该怎么做?提前谢谢 使用office格式有3个选项:
- 如果您只需要支持新格式(.xslx),则可以使用为其编写的任何包装器。甚至ZipArchive和XMLReader类。这是众所周知的,易于加工
- 如果还需要支持旧格式(.xls),则必须使用(t)生锈的Office COM互操作。那一个通常有COM互操作的问题,加上一些独特的问题。比如,由于设计选择不当,需要进行交互式会话
- 对于任何给定的问题、任何给定的文件格式、任何给定的GUI技术,都可能有另一种方法。但这两者之间的差距很小
我的长期建议是使用OpenXML方式,学会完全脱离旧格式。支持它们比支持它要麻烦得多。嘿!谢谢你的建议,但不幸的是我只能用C:(.难道没有办法完成该方法以使其工作吗?OpenXML是一个nuget软件包,您可以在这里找到:@Cristian25旧格式,是文档质量差的专有格式,这导致了使用它们时的所有问题。使用新格式?只需重命名.zip容器中的.xml文件。| ZipArchive允许您“在内存中解包”或“像文件夹一样对待”存在的任何.zip文件: