编程目的:我手头上总是有很多下属公司发过来的EXCEL表格 内容格式是我们来定 大概内容是 他们承接的 工程名称 工作单位名称 工作时间 以及工作内容 工作地点 由于工作量大 需要制作一个软件 批量处理这些表格内的信息 并且进行汇总 管理 查看
具体问题:目前已经做好软件的构架 但是我是新手 对C#读取EXCEL信息没什么了解
需要的功能是这样的:
1:导入/批量导入 EXCEL表格;
2:在软件界面生成一个预览 我想的是用DataGridVIew显示出 导入的大概信息;
3:确认了信息后将信息分类存到数据库里;
4:可以随时查询调用这些信息;
请各位大神帮帮忙。。
1.EXCEL表格我们可以要求下属公司按照严格的格式来填写 所以单元格内的信息是固定的 某个单元格的内容都是可以肯定的。 那么怎么读取这些信息?
2.如何将读取的信息 按照顺序填写到DataGridView里显示出来?
3.如何将这些读取的信息分类存到数据库(Accsee。sql. xml都可以)
C# 读取 EXCEL 数据
答案:3 悬赏:20 手机版
解决时间 2021-01-27 15:04
- 提问者网友:几叶到寒
- 2021-01-26 14:26
最佳答案
- 五星知识达人网友:痴妹与他
- 2021-01-26 15:55
大概思路:把Excel中的数据导出后,赋值到定义好的类中,
再绑定到DataGridVIew中去,DataGridVIew的数据源指向事先定义好的类上,
最后对DataGridVIew进行一些操作
//1.连接Excel并导出Excel数据
/// <summary>
/// Excel导出数据
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static DataSet ImportFormExcel(string path)
{
DataSet oDataSet = new DataSet();
try
{
string strConn = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + path + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel = "select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(oDataSet, "table1");
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return oDataSet;
}
2.解析DataSet
/// <summary>
/// 解析DataSet
/// </summary>
/// <param name="dataSet"></param>
private void GetDataSet(DataSet dataSet)
{
RegistarantCodes regCodeList = new RegistarantCodes();
if (dataSet != null)
{
for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
{
RegistrantCode registrantCode = new RegistrantCode();
registrantCode.AnswerCode = Convert.ToInt32(dataSet.Tables[0].Rows[i][0]);
registrantCode.LanguageValue = Convert.ToInt32(dataSet.Tables[0].Rows[i][1]);
regCodeList.Add(registrantCode);
}
}
}
3.显示到DataGridVIew中
//BindDataGridVIew
private void GetDataSet(RegistarantCodes regCodeList)
{
//这句是我手写的
DataGridVIew.datasourt=regCodeList);
DataGridVIew.dataBind();
}
4.DataGridVIew信息存入数据库中,按照正常的操作存把,我就不写了!
5:注意,可能连接Excel的时候会提错一个错误,需要你安装一个东西,你按照错误安装就ok了
再绑定到DataGridVIew中去,DataGridVIew的数据源指向事先定义好的类上,
最后对DataGridVIew进行一些操作
//1.连接Excel并导出Excel数据
/// <summary>
/// Excel导出数据
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static DataSet ImportFormExcel(string path)
{
DataSet oDataSet = new DataSet();
try
{
string strConn = "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" + path + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel = "select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(oDataSet, "table1");
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return oDataSet;
}
2.解析DataSet
/// <summary>
/// 解析DataSet
/// </summary>
/// <param name="dataSet"></param>
private void GetDataSet(DataSet dataSet)
{
RegistarantCodes regCodeList = new RegistarantCodes();
if (dataSet != null)
{
for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
{
RegistrantCode registrantCode = new RegistrantCode();
registrantCode.AnswerCode = Convert.ToInt32(dataSet.Tables[0].Rows[i][0]);
registrantCode.LanguageValue = Convert.ToInt32(dataSet.Tables[0].Rows[i][1]);
regCodeList.Add(registrantCode);
}
}
}
3.显示到DataGridVIew中
//BindDataGridVIew
private void GetDataSet(RegistarantCodes regCodeList)
{
//这句是我手写的
DataGridVIew.datasourt=regCodeList);
DataGridVIew.dataBind();
}
4.DataGridVIew信息存入数据库中,按照正常的操作存把,我就不写了!
5:注意,可能连接Excel的时候会提错一个错误,需要你安装一个东西,你按照错误安装就ok了
全部回答
- 1楼网友:雾月
- 2021-01-26 16:50
无非就是三步:
1、读取EXCEL数据
2、操作DATAGRIDVIEW
3、更新数据库的
三项技术都不是很难,偶有细节搞不定,网上那么多~~
楼主不会是想要源码吧。。
- 2楼网友:几近狂妄
- 2021-01-26 16:13
代码如下:<br><br>protected void button1_click(object sender, eventargs e)<br> ...{<br> string filepath=fileupload1.postedfile.filename;<br> readexcel(filepath, gdbom);<br> }<br> public void readexcel(string sexcelfile,gridview dgbom)<br> ...{<br> datatable exceltable;<br> dataset ds = new dataset();<br> //excel的连接<br> oledbconnection objconn = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=" + sexcelfile + ";" + "extended properties=excel 8.0;");<br> objconn.open();<br> datatable schematable = objconn.getoledbschematable(system.data.oledb.oledbschemaguid.tables, null);<br> string tablename = schematable.rows[0][2].tostring().trim();//获取 excel 的表名,默认值是sheet1<br> string strsql = "select * from [" + tablename + "]";<br> oledbcommand objcmd = new oledbcommand(strsql, objconn);<br> oledbdataadapter mydata = new oledbdataadapter(strsql, objconn);<br> mydata.fill(ds, tablename);//填充数据<br><br> dgbom.datasource =ds;<br> dgbom.databind();<br> objconn.close();<br><br> exceltable = ds.tables[tablename];<br> int icolums = exceltable.columns.count;//列数<br> int irows = exceltable.rows.count;//行数<br><br> //定义二维数组存储 excel 表中读取的数据<br> string[,] storedata = new string[irows, icolums];<br><br> for(int i=0;i<exceltable.rows.count;i++)<br> for (int j = 0; j < exceltable.columns.count; j++)<br> ...{<br> //将excel表中的数据存储到数组<br> storedata[i, j] = exceltable.rows[i][j].tostring();<br><br> }<br> int excelbom = 0;//记录表中有用信息的行数,有用信息是指除去表的标题和表的栏目,本例中表的用用信息是从第三行开始<br> //确定有用的行数<br> for (int k = 2; k < exceltable.rows.count; k++)<br> if (storedata[k, 1] != "")<br> excelbom++;<br> if (excelbom == 0)<br> ...{<br> response.write("<script language=javascript>alert('您导入的表格不合格式!')</script>");<br> }<br> else<br> ...{<br> //loaddatatodatabase(storedata,excelbom)//该函数主要负责将 storedata 中有用的数据写入到数据库中,在此不是问题的关键省略 <br> }<br><br> }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯