好吧,所以我有一个非常大/复杂的问题,所以要忍受。我正在为公司编写软件。基本上,它将作为其数据库中的GUI运行。我遇到了一个我个人不知道如何解决的问题。我有一个Windows表单,其中包含文本框,该工人将填写,该窗口将构成公司的每日报告。我在下面附上我的表格打印机。我要做的是,当该人输入阶段编号,然后选择焊接或法兰时,我需要代码才能进入我的Excel广播表并拉动所有法兰号的焊接(在第二个中选择了excel explept框)并将它们放入自动完成或第三个框中的下拉列表。基本上,这将使公司通过手动输入允许人为错误的空间来证明公司报告的报告。我还附上了Excel数据库的图片,以便您可以看到它的工作原理。如果有人可以帮助我,我真的很感激。GUI的每日报告表格--- excel数据库
private void textBox2_TextChanged(object sender, EventArgs e)
{
string phasetocheck = textBox1.Text;
Form1 form1 = new Form1();
string cells = Form1.filePath;
Excel ex = new Excel(cells, 1);
string[,] phasenumbers = ex.ReadRange(2, 2, 57400, 4);
int j = 0;
List<string> list = new List<string>();
int i = 2;
foreach (string x in phasenumbers)
{
if(phasetocheck.Contains(x))
{
list.Add(phasenumbers[4, j]);
j++;
}
i++;
}
string[] weldnums = list.ToArray();
textBox2.AutoCompleteCustomSource.AddRange(weldnums);
这是使用ado.net访问excel数据库的示例。您需要拥有访问权限或访问运行时引擎(我相信我使用MS Access Database Engine 2010带有32位.NET-也应该与64位一起使用)。
const string provider = "Microsoft.ACE.OLEDB.12.0";
const string filePath = @"C:temp";
const string filenameTemplate = "*DataFile.xlsx";
string filename = Directory.GetFiles(filePath, filenameTemplate).First();
var cn = new OleDbConnection($"Provider={provider};Data Source={filename};Extended Properties='Excel 12.0 Xml;HDR=YES'");
cn.Open();
var cmd = new OleDbCommand();
cmd.Connection = cn;
var SheetName = "[ALL USERS WITH ACCESS$]";
cmd.CommandText = $"select * from {SheetName}";
var da = new OleDbDataAdapter(cmd);
var dt = new DataTable();
da.Fill(dt);