110,536
社区成员
发帖
与我相关
我的任务
分享
// 倒序遍历该列所有行(从倒2行开始),判断是否有合并单元格且有值,如果遇到则已求出,
// 如果遇到非合并单元格,则行+1(倒回1行),列同样倒序进行
for( int r = row-1; r >=1 ;r--)
{
oRng = (Excel.Range)worksheet.Cells[r,col];
//错在下面这个判断,如果这个单元格实际是null,而这个单元格前面的单元格也是合并单元格呢?下面的判断还是会通过,则取出了前面单元格的数据。
if((bool)oRng.MergeCells )
//改为这样就好了
//if((bool)oRng.MergeCells && oRng.MergeCells.Equals((Excel.Range)worksheet.Cells[row,col]))
{
try
{
if(oRng.Value2 != null)
{
result = oRng.Value2.ToString();
isFound = true;
break;
}
}
catch(Exception)
{}
}
else
{
rowEnd = r+1;
break;
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace WindowsApplication290
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
DataGridView DGV = new DataGridView();
DGV . Parent = this;
DGV.Dock = DockStyle.Fill;
using (OleDbConnection Connection = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source="
+ @"D:\wt\BatchFillAndPay\BatchFillAndPay\bin\Release\复件 Data.xls"
+ ";Extended Properties=Excel 8.0"))
{
OleDbDataAdapter DataAdapter = new OleDbDataAdapter("Select * from [Sheet1$]", Connection);
DataTable DT = new DataTable();
DataAdapter.Fill(DT);
DGV.DataSource = DT;
Connection.Open();
DataAdapter =new OleDbDataAdapter("INSERT INTO [Sheet1$] (编号, 姓名, 金额, F4) VALUES (@编号, @姓名, @金额, @F4)",Connection );
DataAdapter.SelectCommand.Parameters.AddWithValue("编号",1);
DataAdapter.SelectCommand.Parameters.AddWithValue("姓名",2);
DataAdapter.SelectCommand.Parameters.AddWithValue("金额",3);
DataAdapter.SelectCommand.Parameters.AddWithValue("F4",4);
DataAdapter.SelectCommand.ExecuteNonQuery();
}
}
}
}