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 必须否则会出错
}
{
// 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 必须否则会出错
}