乐于分享
好东西不私藏

C#快速填写Excel,使用数组依次填写

C#快速填写Excel,使用数组依次填写

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();

}

相关学习资料