cspreedsheet读写excel文件具体代码

CString CTest_Excel_ClassDlg::GetAppDir(void) //获得程序路径
{
// TODO: 在此添加命令处理程序代码 
//獲得Task路徑
char sPathCurExe[_MAX_PATH];
::GetModuleFileName(AfxGetInstanceHandle(), sPathCurExe, _MAX_PATH );
char sdrive[128], sdir[128], sfname[128], sext[128];
::_tsplitpath(sPathCurExe, sdrive, sdir, sfname, sext);
CString sPath = sdrive;
sPath +=sdir;
return sPath;
}






void CTest_Excel_ClassDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码


CString sPath = GetAppDir();


sPath += "book.xls";


//表1
//CSpreadSheet tasksum( sPath, "tasksum", 0, true, false); //调用第一个构造函数   这些都只在修改版中才有的函数
CSpreadSheet tasksum( sPath, "tasksum", 0); //调用第一个构造函数
/*注释: 
第3个变量表示是否备份*/




CString stemp;
CStringArray sfurarr, sFURLArr, DataArray; 
int icount = tasksum.GetTotalRows();
for(int i=2;i<icount+1;i++)//第1行为列名, 不读取, 从1行开始而不是0行

if( tasksum.ReadRow(DataArray, i) )//如果读取失败, 则DataArray数组为空, 不进行操作
{
stemp = DataArray.GetAt(0);
if( stemp != "" )
sfurarr.Add(stemp);
stemp = DataArray.GetAt(1); 
}

sFURLArr.Copy(sfurarr); 




//表2 调用第二个构造函数
//CSpreadSheet GatherRule( sPath, "GatherRule", tasksum.GetDsn(), tasksum.GetDatabase(), 0, false, false);
CSpreadSheet GatherRule( sPath, "GatherRule", 0);
/*注释: 
第3个变量表示是否备份*/


DataArray.RemoveAll(); 
if( GatherRule.ReadRow(DataArray, 2) )//如果读取失败, 则DataArray数组为空, 不进行操作
{
这些是读取内容的处理, 这里演示不需要
//strTask.sStartURL = DataArray.GetAt(0);
//strTask.sNexPGFFlag = DataArray.GetAt(1); 
//strTask.sNexPGBFlag = DataArray.GetAt(2);
//strTask.sPageRangeF = DataArray.GetAt(3); 
//strTask.sPageRangeT = DataArray.GetAt(4);
//strTask.sPageRangeStep = DataArray.GetAt(5); 
}




//表3 
//CSpreadSheet GetRule( sPath, "GetRule", tasksum.GetDsn(), tasksum.GetDatabase(), 0, false, false);
CSpreadSheet GetRule( sPath, "GetRule", 0);
/*注释: 
第3个变量表示是否备份*/
int igetrulecount = GetRule.GetTotalRows();
for(int i=2;i<igetrulecount+1;i++)
{
DataArray.RemoveAll(); 
if( GetRule.ReadRow(DataArray, i) )
{
//strTask.sMulRow = DataArray.GetAt(0);
//strTask.sInfoFFlag.Add(DataArray.GetAt(1)); 
//strTask.sInfoBFlag.Add(DataArray.GetAt(2)); 
//strTask.sInfoName.Add(DataArray.GetAt(3)); 
//strTask.sInfoFRangF = DataArray.GetAt(4);
//strTask.sInfoBRangF = DataArray.GetAt(5);
}

 
//tasksum.SetFlagCDateBase(true);//设置参数, 表示可以关闭DataBase
//tasksum.CloseDataBase();//关闭DataBase  必须否则会出错


}
void CTest_Excel_ClassDlg::OnBnClickedButton2()
{
 
CString sPath = GetAppDir();
sPath += "book.xls";




CStringArray DataArray, HeadArray;
CString stemp; 
CString stime;
 


//表1  
//CSpreadSheet tasksum( sPath, "tasksum", 0, true, false);  
CSpreadSheet tasksum( sPath, "tasksum", 0);  
/*注释: 
第3个变量表示要打开excel表格, 即DataBase
第4个变量表示不要关闭excel表格*/




//固定行可以不调哟
//tasksum.EmptySheet();//删除表格, 实际是删除保存数据的数组, 然后最后在commit中更新
tasksum.BeginTransaction();//如果设置这行, 在AddRow中将不调用commit保存到excel中直至调用手动调用commit保存, 如果每次保存 速度将很慢




//加入标题 
HeadArray.Add("FURL"); 
HeadArray.Add("TaskNote"); 
tasksum.AddHeaders(HeadArray, true);//填写列名, 总共两列
int icol = HeadArray.GetCount();


int irow = 3;//假设为3行
 
for(int i=0;i<icol;i++)
{
stemp.Format("%d", i);
DataArray.Add(stemp);
}
 
for(int i=0;i<irow;i++)
{   
tasksum.AddRow(DataArray, 2+i, true);  //从第二行开始保存, 第一行为列名

tasksum.Commit();//保存到 sheet中, 


 


//表2
HeadArray.RemoveAll();
DataArray.RemoveAll();
//CSpreadSheet GatherRule( sPath, "GatherRule", tasksum.GetDsn(), tasksum.GetDatabase(), 0, false, false); 
CSpreadSheet GatherRule( sPath, "GatherRule", 0); 
 

GatherRule.BeginTransaction();
//tasksum.EmptySheet();//固定行可以不调用, 行数变化的需要调用, 去除以前多余的行
// 加入标题 
HeadArray.Add("sStartURL"); 
HeadArray.Add("sNexPGFFlag"); 
HeadArray.Add("sNexPGBFlag"); 
HeadArray.Add("sPageRangeF"); 
HeadArray.Add("sPageRangeT"); 
HeadArray.Add("sPageRangeStep"); 
GatherRule.AddHeaders(HeadArray, true);



DataArray.RemoveAll();//清空数组
icol = HeadArray.GetCount();
for(int i=0;i<icol;i++)
{
stemp.Format("%d", i);
DataArray.Add(stemp);

GatherRule.AddRow(DataArray, 2, true);   


GatherRule.Commit();//保存到 sheet中,








//表3
//CSpreadSheet GetRule( sPath, "GetRule", tasksum.GetDsn(), tasksum.GetDatabase(), 0, false, false);  
CSpreadSheet GetRuleddd( sPath, "GetRule", 0); 
GetRuleddd.DeleteSheet(); //删除表格

CSpreadSheet GetRule( sPath, "GetRule", 0); 
GetRule.BeginTransaction(); 
//GetRule.EmptySheet();  使用deletesheet 下面将无法保存吧
// 加入标题 
HeadArray.RemoveAll();
HeadArray.Add("sMulRow"); 
HeadArray.Add("sInfoFFlag"); 
HeadArray.Add("sInfoBFlag"); 
HeadArray.Add("sInfoName"); 
HeadArray.Add("sInfoFRangF"); 
HeadArray.Add("sInfoBRangF"); 
GetRule.AddHeaders(HeadArray, true);


icol = HeadArray.GetCount();
irow = 5;//假设为3行
DataArray.RemoveAll();//如果没清空, 则列数跟列名的行数不同, 将无法保存
for(int i=0;i<icol;i++)
{
stemp.Format("%d", i);
DataArray.Add(stemp);
}
for(int i=0;i<irow;i++)
{   
GetRule.AddRow(DataArray, 2+i, true);  //从第二行开始保存, 第一行为列名

GetRule.Commit();//保存到 sheet中,


//tasksum.SetFlagCDateBase(true);//设置参数, 表示可以关闭DataBase
//tasksum.CloseDataBase();//关闭DataBase  必须否则会出错
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值