- ·上一篇:excel表格中股票图怎么弄
- ·下一篇:excel表格怎么冻结前2行
excel表格怎么写个程序
1.excel中如何编小程序
1、首先打开Excel,以制作一个抽奖小程序为例,先输一些数据。
2、首先我们在抽奖区的单元格中输入=INDEX()。
3、然后选中数据源,也就是所有成员。
4、然后继续输入=INDEX(E:E,Randbetween())。
5、在Randbetween()这个涵数中输入1,5,也就是数据源。
6、输入完成后,回车确认,这样一个抽奖小程序就制作好了。
7、我们只需要按f9里面的幸运儿就跟着切换了。
2.在EXCEL中如何编写程序?
基本思路 基础实现方法同上篇文章《直接通过odbc读、写excel表格文件》相同,都是通过odbc来把excel表格文件当成数据库文件来进行读、写等操作,所以在excel表格文件中写入的行头名必须是唯一的(不要重名,相当于数据库中的id值)。
本文中对excel文件的操作都被封装进一个类cspreadsheet中,通过它我们可以非常简便的实现各种excel表格数据操作,并且可以对该类进行扩充来满足自己的需求。 具体实现 一、包含excel文件操作类头文件 #include "cspreadsheet.h" 二、新建excel文件,并写入默认数据 // 新建excel文件名及路径,testsheet为内部表名 cspreadsheet ss("c:\\test.xls", "testsheet"); cstringarray samplearray, testrow; ss.begintransaction(); // 加入标题 samplearray.removeall(); samplearray.add("姓名"); samplearray.add("年龄"); ss.addheaders(samplearray); // 加入数据 cstring strname[] = {"徐","徐","郭","牛","朱"}; cstring strage[] = {"27","23","28","27","26"}; for(int i = 0; i < sizeof(strname)/sizeof(cstring); i++) { samplearray.removeall(); samplearray.add(strname[i]); samplearray.add(strage[i]); ss.addrow(samplearray); } ss.commit(); 三、读取excel文件数据 cspreadsheet ss("c:\\test.xls", "testsheet"); cstringarray rows, column; //清空列表框 m_accesslist.resetcontent(); for (int i = 1; i <= ss.gettotalrows(); i++) { // 读取一行 ss.readrow(rows, i); cstring strcontents = ""; for (int j = 1; j <= rows.getsize(); j++) { if(j == 1) strcontents = rows.getat(j-1); else strcontents = strcontents + " --> " + rows.getat(j-1); } m_accesslist.addstring(strcontents); } 四、对已存在excel表格数据进行添加、插入、替换操作 // 初始化测试行数据,进行添加、插入及替换数据操作演示 for (int k = 1; k <= 2; k++) { testrow.add("test"); } ss.addrow(testrow); // 添加到尾部 ss.addrow(testrow, 2); // 插入新行到第二行 ss.addrow(testrow, 6, true); // 替换原第四行来新的内容 ss.addcell("徐景周", 1,2); // 添加(不存在)或替换(存在)第二行,第一列单元格内容 ss.commit(); 五、对已存在excel表格数据进行行、列、单元格查询 void cexcelaccessdlg::onquery() { cspreadsheet ss("c:\\test.xls", "testsheet"); cstringarray rows, column; cstring tempstring = ""; updatedata(); if(m_strrow == "" && m_strcolumn == "") // 查询为空 { afxmessagebox("行号、列号不能同时为空!"); return; } else if(m_strrow == "" && m_strcolumn != "") // 查询指定列数据 { int icolumn = atoi(m_strcolumn); int icols = ss.gettotalcolumns(); if(icolumn > icols) // 超出表范围查询时 { cstring str; str.format("表中总列数为: %d, ", icols); afxmessagebox(str + " 查询列数大于excel表中总列数,请重新输入!"); return; } // 读取一列数据,并按行读出 if(!ss.readcolumn(column, icolumn)) { afxmessagebox(ss.getlasterror()); return; } cstring tmpstr; for (int i = 0; i < column.getsize(); i++) { tmpstr.format("行号: %d, 列号: %d ,内容: %s\n", i+1,icolumn,column.getat(i)); tempstring += tmpstr; } afxmessagebox(tempstring); } else if(m_strrow != "" && m_strcolumn == "") // 查询指定行数数据 { int irow = atoi(m_strrow); int irows = ss.gettotalrows(); if(irow > irows) // 超出表范围查询时 { cstring str; str.format("表中总行数为: %d, ", irows); afxmessagebox(str + " 查询行数大于excel表中总行数,请重新输入!"); return; } // 读取指定行数据 if(!ss.readrow(rows, irow)) { afxmessagebox(ss.getlasterror()); return; } cstring tmpstr; for (int i = 0; i < rows.getsize(); i++) { tmpstr.format("行号: %d, 列号: %d ,内容: %s\n", irow, i+1, rows.getat(i)); tempstring += tmpstr; } afxmessagebox(tempstring); } else if(m_strrow != "" && m_strcolumn != "") // 查询指定单元格数据 { int irow = atoi(m_strrow), icolumn = atoi(m_strcolumn); int irows = ss.gettotalrows(), icols = ss.gettotalcolumns(); if(icolumn > icols) // 超出表范围查询时 { cstring str; str.format("表中总列数为: %d, ", icols); afxmessagebox(str + " 查询列数大于excel表中总列数,请重新输入!"); return; } else if(irow > irows) { cstring str; str.format("表中总行数为: %d, ", irows); afxmessagebox(str + " 查询行数大于excel表中总行数,请重新输入!"); return; } // 读取指定行、列单元格数据 if(!ss.readcell(tempstring, icolumn, irow)) { afxmessagebox(ss.getlasterror()); return; } cstring str; str.format("行号: %d, 列号: %d ,内容: %s", irow,icolumn,tempstring); afxmessagebox(str); } } 六、将存在的excel转换另存为指定分隔的文本文件 // 将原excel文件转换为用分号分隔的文本,并另存为同名文本文件 ss.convert(";"); 七、删除excel中表格 ss. deletesheet(); // 删除excel文件中所有表格 ss. deletesheet(" testsheet "); // 删除excel。