c# - C# Windows 窗体 Excel 数据库拉取
问题描述
好的,所以我有一个非常大/复杂的问题,请耐心等待。我正在为一家公司编写软件。它基本上将作为他们在 Excel 中的数据库的 GUI 运行。我遇到了一个我个人不知道如何解决的问题。我有一个带有文本框的 Windows 表单,工人将填写这些文本框,形成公司的每日报告。我在下面附上了我的表格的打印机。我的程序要做的是,当人输入阶段编号,然后选择焊接或法兰时,我需要代码进入我的 excel 电子表格并拉出所有法兰编号的焊接(以第二个中选择的为准)框)并将它们放入第三个框中的自动完成或下拉列表中。基本上,这将通过不允许手动输入的人为错误空间来证明公司报告的制作。我还附上了我的 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 数据库的示例。您需要有 Access 或 Access 运行时引擎(我相信我使用带有 32 位 .Net 的 MS Access 数据库引擎 2010 - 也应该可以使用 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);
推荐阅读
- c# - C# 将参数从 string.property 传递给返回变量值的函数。
- c++ - 调试时如何查看全局变量
- python - 在我的数据框末尾添加 3 个重复列
- python - 如何使用 python 正则表达式获取两个模式之间的所有内容?
- c++ - 带有 gcc 的通用 lambdas mem_fn
- json - Corona SDK Lua,如何写入json文件中的特定点
- azure-devops - AzureDevops VSTest 任务失败:调用执行程序'executor://mstestadapter/v2':类型中的方法'get_Properties' - 没有实现
- bash - Bash 重定向输出表单 passwd 以供 grep 用于验证密码更改是否正确
- web-services - 如何为 iOS 和 Android 配置 VS 服务参考工具?
- python - 测试 numpy 字符数组是否相等