磁盘中存在文件A.xlsx,其中sheet1(5,5)已写入文本“hello”,如何实现在该文件的sheet1(5,6)写入“world”?
库:libxl免费试用版(linux)
尝试如下:
string file_name = "/home/demo/Documents/test_libxl.xlsx";
Book *book = xlCreateBook();
book->load(file_name.c_str());
Sheet *sheet = book->getSheet(0);
sheet->writeStr(5, 6, "World");
book->save(file_name.c_str());
book->release();
在writeStr时报错
libxl可以支持修改.xlsx文件吗?或者还有其他库可以实现该功能吗?
libxl能修改.xlsx文件,
但是有要求,这个文件必须是用xlsx文件创建的,且不能被windows的WPS修改,这是测试的时候遇到的问题。也不知道这些问题是不是都会遇到
然后先看看你这个代码问题出在哪里了,你这代码几乎没有问题,改完初始化函数就OK了:
void test_2()
{
//String file_name = "my.xlsx";
char file_name[100] = "my.xlsx";
Book *book = xlCreateXMLBook();//主要是改这里,其他的几乎都没动。
book->load(file_name);
Sheet *sheet = book->getSheet(0);
sheet->writeStr(5, 6, "World");
book->save(file_name);
book->release();
}
int main()
{
test_2();
return 0;
}
下面是C语言实现的。C语言也可以写。
char *file_name = "hello.xlsx";
void test_3()
{
BookHandle book = xlCreateXMLBook();
DEBUG_INFO("hello world book = %p\n",book);
if(book)
{
DEBUG_INFO("xlCreateBook ok");
if(xlBookLoad(book, file_name))
{
DEBUG_INFO("xlBookLoad ok");
SheetHandle sheet = xlBookGetSheet(book, 0);
if(sheet)
{
xlSheetWriteStr(sheet, 5,5 , "hello", 0);
xlSheetWriteStr(sheet, 5,6, "world", 0);
}else{
DEBUG_INFO("error");
exit(-1);
}
if(xlBookSave(book, file_name)){
DEBUG_INFO("save %s ok",file_name);
}else{
DEBUG_INFO("save %s error",file_name);
}
}else{
DEBUG_INFO("xlBookLoad error");
}
xlBookRelease(book);
}else{
DEBUG_INFO("xlCreateBook error");
}
}
int main()
{
test_3();
return 0;
}
再考虑你的代码:
string file_name = "/home/demo/Documents/test_libxl.xlsx";
Book *book = xlCreateBook();
book->load(file_name.c_str());
Sheet *sheet = book->getSheet(0);
sheet->writeStr(5, 6, "World");
book->save(file_name.c_str());
book->release();
//打开Excel文件
CFileDialog dlg(TRUE,NULL,NULL,0,"Excel Files(*.xlsx)|*.xlsx||");
if(IDOK!=dlg.DoModal())
return;
CString path=dlg.GetPathName();
CMyExcel fzExcel;
if(!fzExcel.Open(path))
{
AfxMessageBox("无法打开Excel!",MB_OK,-1);
return;
}
if(fzExcel.OpenSheet("Sheet1")==FALSE)
{
AfxMessageBox("无法打开有效的Sheet!",MB_OK,-1);
}
//然后可以写入
c# excel文件读写操作
https://blog.csdn.net/qq_40216020/article/details/126222238