BasicExcel 是一个非常简单的操作Excel的库,使用C++编写,虽然功能有限,但基本的读写单元格、工作簿、生成新的excel文件的功能还是具备,他最大的亮点就是不需要第三方依赖,整个库就两个文件
BasicExcelVC6.cpp
BasicExcelVC6.h
一共就200多K,使用也很简单,只要把这两个文件包含在你的工程项目内就可以了
整个BasicExcel 分为三个类
class BasicExcel:操作excel文件的,例如载入、保存文件,新建、删除工作表等
class BasicExcelWorksheet:操作工作表,例如:获取工作表名称,获取行、列数量
class BasicExcelCell:操作单元格,例如,读取,更改
来演示一下,它具体使用
首先,创建一个xls文件,里面有两个工作表,表的内容基本都一样
载入excel
int main(int argc, char* argv[])
{
_wsetlocale(LC_ALL, L"chs");
BasicExcel *e = new BasicExcel();
//加载excel文件
if (!e->Load(argv[1]))
{
printf("文件载入错误");
return 0;
}
//获取工作表数量
int sheetscount = e->GetTotalWorkSheets();
printf("工作表数:%d\n", sheetscount);
for (size_t i = 0; i < sheetscount; i++)
{
//获取工作表名称
wprintf(L"第%i个工作表名称:%s\n",i+1,e->GetUnicodeSheetName(i));
}
//获取索引为1的工作表,也就是第二个工作表
BasicExcelWorksheet* sheet1 = e->GetWorksheet((unsigned)1);
if (sheet1) {
//更改单元格内容
//changecell(sheet1,e);
//读取单元格内容
readsheet(sheet1);;
}
return 0;
}
最好使用宽字符读取字符串,从使用中发现,如果你用多字节,可能会出错,首先要设置地域信息_wsetlocale(LC_ALL, L"chs");
读取单元格
void readsheet(BasicExcelWorksheet* sheet1)
{
//获取行数
size_t rows = sheet1->GetTotalRows();
//获取列数
size_t cols = sheet1->GetTotalCols();
for (size_t r = 0; r < rows; r++) {
printf("\n");
for (size_t c = 0; c < cols; c++)
{
//获取r行,c列的内容
BasicExcelCell* cell = sheet1->Cell(r, c);
//判断单元格类型
switch (cell->Type())
{
case BasicExcelCell::WSTRING:
{
const wchar_t* ret = cell->GetWString();
wprintf(L"%s ", ret);
}
break;
case BasicExcelCell::DOUBLE:
{
double ret = cell->GetDouble();
printf("%.2f ", ret);
}
break;
case BasicExcelCell::INT:
{
int ret = cell->GetInteger();
printf("%d ", ret);
}
break;
default:
break;
}
}
}
}
更改单元格内容
void changecell(BasicExcelWorksheet* sheet1, BasicExcel *e)
{
//更改单元单元格第1行第1列内容,设置为double类型,数值为0.12
//然后保存为b.xls
BasicExcelCell* cell = sheet1->Cell(1, 1);
cell->SetDouble(0.12);
e->SaveAs("b.xls");
}
创建新xls文件和工作表
int main(int argc, char* argv[])
{
setlocale(LC_ALL, "chs");
BasicExcel *e = new BasicExcel();
//创建一个工作表
e->New(1);
BasicExcelWorksheet* sheet = e->GetWorksheet((unsigned)0);
//将工作表命名
sheet->Rename(L"新工作表");
//选择第0行第0列
BasicExcelCell* cell = sheet->Cell(0, 0);
//设置文字
cell->SetWString(L"测试");
cell = sheet->Cell(1, 0);
cell->SetWString(L"ABC");
//另存文件
e->SaveAs("c.xls");
return 0;
}
以上就是BasicExcel的基本使用和操作,可以看到,他的使用基本不需要学习成本,就可以开发,虽然功能上弱了一点,但基本的操作还是具备的。