将Excel数据从另一个显示到主应用程序类,并在Datagridview和组合框中显示
本文关键字:显示 Datagridview 并在 组合 应用程序 数据 Excel 另一个 | 更新日期: 2023-09-27 18:30:01
我得到了一个很大的.xls文件,其中包含许多列,包括城市名称、人口名称等。出于代码目的,我只从这个excell文件中提取城市名称和人口编号。我用一个方法制作了另一个类,该方法将修改.xls文件。现在在主Form1.cs中,我想首先在datagridview表中以两列的形式显示该值,如城市和人口,然后从datagridview中,我希望在组合框列表中显示城市名称。我为此写了一个代码。但它显示出了很多错误。
为了获得excel数据,我编写了以下代码
public class Data
{
public string DataService(DataTable data)//showing error
{
var startPath = Application.StartupPath;
string folderName = Path.Combine(startPath, "POI_List");
System.IO.Directory.CreateDirectory(folderName);
string SavedfileName = "POI_list.json";
var Saving_path = Path.Combine(folderName, SavedfileName);
string fileName = "Zensus_Gemeinden_org.xlsx";
var path = Path.Combine(startPath, fileName);
String name = "Gemeinden_31.12.2011_Vergleich";
String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
path + ";Extended Properties='Excel 12.0 XML;HDR=YES;';";
OleDbConnection con = new OleDbConnection(constr);
OleDbCommand oconn = new OleDbCommand("Select [3] as City,[4] as Population, * From [" + name + "$D7:E11300] Where [4] > 10000", con);
con.Open();
OleDbDataAdapter sda = new OleDbDataAdapter(oconn);
//DataTable data = new DataTable();
sda.Fill(data);
string Place_Json = "Place_List:" + JsonConvert.SerializeObject(data, Formatting.Indented);
File.WriteAllText(Saving_path, Place_Json);
return data;//showing error
}
}
}
现在,为了从datagrid视图和combobox中的main类中获得这个值,我编写了以下代码
public partial class Form1 : Form
{
private readonly Data _DataService;// showing error
public Form1()
{
_DataService=new Data();
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = //here I want to set data from DataService method);
for (int i = 0; i < data.Rows.Count; i++)//showing error for 'for'
{
comboBox1.Items.Add(data.Rows[i]["City"]);
}
}
}
DataService方法签名是公共的字符串DataService(DataTable数据)。但是您试图返回DataTable
编辑:只需修改您的方法:
public DataTable DataService()
{
var data = new DataTable();
var startPath = Application.StartupPath;
string folderName = Path.Combine(startPath, "POI_List");
System.IO.Directory.CreateDirectory(folderName);
string SavedfileName = "POI_list.json";
var Saving_path = Path.Combine(folderName, SavedfileName);
string fileName = "Zensus_Gemeinden_org.xlsx";
var path = Path.Combine(startPath, fileName);
String name = "Gemeinden_31.12.2011_Vergleich";
String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
path + ";Extended Properties='Excel 12.0 XML;HDR=YES;';";
OleDbConnection con = new OleDbConnection(constr);
OleDbCommand oconn = new OleDbCommand("Select [3] as City,[4] as Population, * From [" + name + "$D7:E11300] Where [4] > 10000", con);
con.Open();
OleDbDataAdapter sda = new OleDbDataAdapter(oconn);
//DataTable data = new DataTable();
sda.Fill(data);
string Place_Json = "Place_List:" + JsonConvert.SerializeObject(data, Formatting.Indented);
File.WriteAllText(Saving_path, Place_Json);
return data;
}
}
public partial class Form1 : Form
{私有只读数据_Data;
public Form1()
{
_data = new Data();
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var dataTable = _data.DataService()
dataGridView1.DataSource = dataTable ;
for (int i = 0; i < dataTable.Rows.Count; i++)//showing error for 'for'
{
comboBox1.Items.Add(dataTable.Rows[i]["City"]);
}
}
}