100分,讨论C#操作EXCEL对比的问题
两个EXCEL文件,如果A1相同,就认为是该行相同,相同的取出来放在新建的EXCEL文件里,不同的也是放在新建EXECEL文件里写下方案和代码,越详细得越好,分可以继续加. --------------------编程问答-------------------- 帮你顶 --------------------编程问答-------------------- 友情支持 --------------------编程问答-------------------- 访问应该和GRID差不多吧 --------------------编程问答-------------------- 顶上去啊 --------------------编程问答-------------------- 用COM来操作Excel,在来一个一个的比较
可以取到一个一个的单元格的值 --------------------编程问答-------------------- //将Excel表格中某一sheet中内容放于dataGrid中显示示例:
/*
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = X:\\表.xls;Extended Properties=Excel 8.0";
OleDbConnection myConn = new OleDbConnection(strCon);
string strCom = " SELECT * FROM [表$] ";
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
DataSet myDataSet;
myDataSet = new DataSet();
myCommand.Fill(myDataSet, "[表$]");
myConn.Close();
this.dataGridView1.DataSource = myDataSet.Tables[0];
*/
--------------------编程问答-------------------- 顶啊 --------------------编程问答-------------------- 给你个思路:
先把excel数据读到datatable里。
然后设置一个bool flag[]。
用2个for循环进行比较,a1相同的行flag为true。
最后来个循环,把flag为false的写到一个excel,flag为true的写到另一个。
这和我昨天答过的从textbox取文本归类是一样的。 --------------------编程问答-------------------- 顶 --------------------编程问答-------------------- 顶 --------------------编程问答-------------------- 先把excel数据读到datatable里。
然后设置一个bool flag[]。
用2个for循环进行比较,a1相同的行flag为true。
最后来个循环,把flag为false的写到一个excel,flag为true的写到另一个
--------------------------------------------------------------
是个好思路,不妨试试 --------------------编程问答-------------------- 顶一下有没有更详细点的,代码正在写,呵,完成就加分了 --------------------编程问答--------------------
~~~~游过~~~~
~~~友情UP~~~~
--------------------编程问答-------------------- 先把excel数据读到datatable里。
然后循环比较 相同的复制这一行到另一个datetable 并且删除这一行~
最后就剩下不相同的行 2个datatable合并就好
这样省去再次循环~~ 这里只是思路 具体读写操作没有说~~ --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 跟上数据结构课时遇到的问题很相似…… --------------------编程问答-------------------- 明天我要是有空的话就为了你的分数写下代码了 hoho~~~~~~~~~~~~~~ --------------------编程问答--------------------
导入DadaSet代码:
private DataSet BindDsFromExcel(string strFileDir, string strDataName)
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strFileDir + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
String sql = "SELECT * FROM [" + strDataName + "$]";
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
DataSet OleDsExcle = new DataSet();
OleDaExcel.Fill(OleDsExcle, strDataName);
OleConn.Close();
return OleDsExcle;
}
写入Excel代码:
--------------------编程问答-------------------- ding --------------------编程问答-------------------- up --------------------编程问答-------------------- Microsoft.Office.Interop.Excel.Application
try
{
Microsoft.Office.Interop.Excel.Application myExcel = new Microsoft.Office.Interop.Excel.Application();//创建Excel表
myExcel.Visible = true;
Microsoft.Office.Interop.Excel.Workbooks myWorkbooks = myExcel.Workbooks;//创建Excel工作表
Microsoft.Office.Interop.Excel.Workbook myWorkbook = myWorkbooks.Add(System.Reflection.Missing.Value); //创建Excel工作表
Microsoft.Office.Interop.Excel.Worksheet myWorksheet = (Microsoft.Office.Interop.Excel.Worksheet)myWorkbook.Worksheets[1];//创建Excel工作表Sheet1页
Microsoft.Office.Interop.Excel.Range myrange = myWorksheet.get_Range("A1", "D1");//选择页的范围,从“A1”开始,我这是四列所以到“D1”
object[] myhead = { "日期", "组名", "付款人", "金额" };//设置表头
myrange.Value2 = myhead;//表头的值传入Excel表
if (dgvRecord.Rows.Count > 0)
{
myrange = myWorksheet.get_Range("A2", System.Reflection.Missing.Value);
int row = 0;
row = dgvRecord.Rows.Count;//设置表的行数
int col = 4;//设置表的列数
object[,] mydata = new object[row, col];
for (int i = 0; i < row; i++)//循环读取DataGridView上的数据
{
for (int j = 0; j < col; j++)
{
mydata[i, j] = dgvRecord[j, i].Value.ToString();//读取DataGridView上的值保存到mydata数组中,这里要注意哦,DataGridView是列在前,而Excel刚好相反
}
}
myrange = myrange.get_Resize(row, col);
myrange.Value2 = mydata;//把madata数组的值存到Excel表导出
myrange.EntireColumn.AutoFit();
}
myExcel = null;//清空表单
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
这句话中还需要引入using吗??我怎么打microsoft后,没有office出现呀???
--------------------编程问答--------------------
添加excel的com模式.然后遍历
添加引用.然后在com选项卡里找. --------------------编程问答-------------------- 找人一起挖坟
补充:.NET技术 , C#