privatevoidPrint退耕还林TableB8(stringTableName="")
{
stringsql=string.Format("select count(*) from {0} ", TableName);
intnum=YLCover.StrToInt(pAccessOP.ExecuteQuery(sql));
myExcel.ActivateSheet(9);
intStartIDX=5;
// 只在需要时拷贝行
if (num-3>0)
{
myExcel.CopyRownum(StartIDX, num-3);
}
sql=string.Format("select xzname,name,SYLDDKXH,XIAO_BAN,SumArea,F1,F2,F3,Yearstr,bz,code from {0} order by code,xzname", TableName);
OleDbDataReaderpReader=pAccessOP.CreateReader(sql);
try
{
// 第一步:先将所有数据读入内存
List<object[]> dataList=newList<object[]>();
while (pReader.Read())
{
stringname=pReader["name"].ToString();
stringXZName=pReader["XZName"].ToString();
object[] row=newobject[10];
row[0] =XZName;
row[1] =name;
row[2] =pReader["SYLDDKXH"].ToString();
row[3] ="'"+pReader["XIAO_BAN"].ToString();//00丢失
row[4] =pReader["SumArea"].ToString();
row[5] =pReader["F1"].ToString();
row[6] =pReader["F2"].ToString();
row[7] =pReader["F3"].ToString();
row[8] =pReader["YearStr"].ToString();
row[9] =pReader["BZ"].ToString();
dataList.Add(row);
}
introwCount=dataList.Count;
if (rowCount>0)
{
// 第二步:转换为二维数组
object[,] dataArray=newobject[rowCount, 10];
for (inti=0; i<rowCount; i++)
{
for (intj=0; j<10; j++)
{
dataArray[i, j] =dataList[i][j];
}
}
// 第三步:一次性批量写入Excel(关键优化!)
myExcel.SetRange(StartIDX, 1, StartIDX+rowCount-1, 10, dataArray);
myExcel.MergeEmptyFirstCol(StartIDX);
myExcel.DeleteColumnHIfEmpty(StartIDX);//删除8列
// 第四步:批量合并单元格
//myExcel.MergeRow(StartIDX, StartIDX + rowCount - 1, 1);
}
}
catch (Exceptionex)
{
MessageBox.Show("失败:"+ex.Message);
}
finally
{
pReader.Close();
}
}
publicvoidSetRange(introw1, intcol1, introw2, intcol2, object[,] dataArray)
{
Excel.RangepRange=myExcel.get_Range(myExcel.Cells[row1, col1], myExcel.Cells[row2, col2]);
if (row2>row1)
{
CellsDrawFrame(row1, col1, row2, col2);//true,true,true,true,true,true,true,true,
}
pRange.Value=dataArray;
// pExcel.Range.EntireColumn.AutoFit();
}

夜雨聆风