用COM来操作Excel,在来一个一个的比较
可以取到一个一个的单元格的值
可以取到一个一个的单元格的值
解决方案 »
- 本机运行没有问题,但是换到另一台没有安装SQL server 的机子上运行,连接不上数据库文件
- 打印设置:连注册表都没有这个选项!
- c# picture控件中超大图片显示问题
- 大虾,C#菜鸟来啦救救俺
- 任务栏窗口按钮右键菜单问题
- 请高手能给出 用委托 事件 异步 多线程 等方法写的一些程序 最好有注释
- Session取不到值的问题,解决马上结贴。。
- 求[华为编程开发规范与案例]doc版
- xml和sql server之间如何导入导出数据(在c#中的使用)
- 如何根据文件的扩展名。找到文件关联在一起的程序的文件名?
- 各位高手请进:有关messagebox使用问题
- 如何将一个EXecl中的多张表导入? 然后将datagridview中的数据,只要是显示过的,都可以导出!
/*
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];
*/
然后设置一个bool flag[]。
用2个for循环进行比较,a1相同的行flag为true。
最后来个循环,把flag为false的写到一个excel,flag为true的写到另一个。这和我昨天答过的从textbox取文本归类是一样的。
然后设置一个bool flag[]。
用2个for循环进行比较,a1相同的行flag为true。
最后来个循环,把flag为false的写到一个excel,flag为true的写到另一个
--------------------------------------------------------------
是个好思路,不妨试试
然后循环比较 相同的复制这一行到另一个datetable 并且删除这一行~ 最后就剩下不相同的行 2个datatable合并就好
这样省去再次循环~~ 这里只是思路 具体读写操作没有说~~
{
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代码: 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选项卡里找.