2019独角兽企业重金招聘Python工程师标准>>>

方法1:通过数据库

(1)导出excel

CDatabase database;
CString sDriver     = _T("MICROSOFT EXCEL DRIVER (*.XLS)"); // Excel安装驱动
CString sExcelFile  =  _T("c:\\系统告警信息导出文件.xls");     // 要建立的Excel文件
if (_waccess(sExcelFile.AllocSysString(),0)!= -1)remove(sExcelFile);//删除TRY
{// 创建进行存取的字符串CString sSql;sSql.Format(_T("DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s"),sDriver, sExcelFile, sExcelFile);// 创建数据库 (既Excel表格文件)if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ){//  创建表结构(姓名、年龄)sSql = _T("CREATE TABLE 表名(编号 TEXT, 字段1TEXT, 字段2TEXT, 字段3TEXT, 字段4TEXT, 字段5TEXT,[字段6] TEXT)");database.ExecuteSQL(sSql);for( int iCount=0; iCount <m_list.GetItemCount();iCount++){CString  strNum,strMsi,strPhoneNum,strType,strResult,strDescribe,strTime;strNum     = m_list.GetItemText(iCount, 0);strMsi     = m_list.GetItemText(iCount, 1);strPhoneNum = m_list.GetItemText(iCount, 2);strType       = m_list.GetItemText(iCount, 3);strResult  = m_list.GetItemText(iCount, 4);strDescribe = m_list.GetItemText(iCount, 5);strTime       = m_list.GetItemText(iCount, 6);// 插入数值sSql.Format(_T("INSERT INTO 表名(编号, 字段1, 字段2, 字段3, 字段4, 字段5,\[字段6]) VALUES ('%s','%s','%s', '%s','%s','%s', '%s')"),strNum,strMsi,strPhoneNum, strType,strResult,strDescribe, strTime);database.ExecuteSQL(sSql);}}   // 关闭数据库database.Close();}CATCH_ALL(e){TRACE1("Excel驱动没有安装: %s",sDriver);MessageBox(_T( "导出数据失败!"), _T( "错误" ), MB_OK);}END_CATCH_ALL;

(2)导入excel

CString strFileFilter(_T("XLS File(*.xls)|*.xls|XLSX File(*.xlsx)|*.xlsx||"));CFileDialog fileOpen(TRUE, _T("*.xls;*.xlsx"), _T(""), OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,strFileFilter , NULL);if (IDOK != fileOpen.DoModal())return ;CString sExcelFile = fileOpen.GetPathName();CString sSql;CString sDriver       = _T("MICROSOFT EXCEL DRIVER (*.XLS)");              // Excel安装驱动sSql.Format(_T("DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s"),sDriver, sExcelFile, sExcelFile);CDatabase database;CRecordset rs;if( !database.OpenEx(sSql,CDatabase::noOdbcDialog) )return;m_list.DeleteAllItems();CRecordset recordset(&database);sSql = _T("select * from 白名单 ");recordset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);CString strPhoneNumber,strVender,strIMSI,strIMEI,strRollCall;    int nIndex = 0;while( !recordset.IsEOF( ) ) {recordset.GetFieldValue(short(0),strPhoneNumber);recordset.GetFieldValue(short(1),strVender);recordset.GetFieldValue(short(2),strIMSI);recordset.GetFieldValue(short(3),strIMEI);recordset.GetFieldValue(short(4),strRollCall);recordset.MoveNext();}

方法2:调用libxl动态库

#pragma once
#include <vector>
#include <string>//! 读取excel中的数据
struct CLibXlInfo;
class _declspec(dllexport) CExcelReaderLibXl
{
public:CExcelReaderLibXl(void);virtual ~CExcelReaderLibXl(void);public:bool Open(CString& strXlsFile);bool Close();bool Save();//保存public:long GetSheetCount();long GetRows(long lSheetIndex);long GetCols(long lSheetIndex);bool ReadRowTexts(long lSheetIndex , long lRow, std::vector<CString>& arrValues);//写入数据bool WirteCellText(long lSheetIndex , long lRow, long lCol, CString strValue);private:CLibXlInfo* m_pBookInfo;
};
#include "StdAfx.h"
#include "ExcelReaderLibXl.h"
#include "libxl-3.7.2.0/libxl.h"struct CLibXlInfo
{CLibXlInfo (): m_pBook(NULL){}libxl::Book* m_pBook;CString m_strFileName;
};CExcelReaderLibXl::CExcelReaderLibXl(void)
: m_pBookInfo(new CLibXlInfo)
{
}CExcelReaderLibXl::~CExcelReaderLibXl(void)
{Close();delete m_pBookInfo;
}bool CExcelReaderLibXl::Open(CString& strXlsFile)
{if (!Close())return false;CString strExt(CComVar(strXlsFile).GetFileExtOnly());strExt.MakeUpper();m_pBookInfo->m_pBook = NULL;if (strExt == _T("XLS"))m_pBookInfo->m_pBook = xlCreateBook();else if (strExt == _T("XLSX"))m_pBookInfo->m_pBook = xlCreateXMLBook();if (NULL == m_pBookInfo->m_pBook)return false;//解锁m_pBookInfo->m_pBook->setKey(_T("Halil Kural"), _T("windows-2723210a07c4e90162b26966a8jcdboe"));if (!m_pBookInfo->m_pBook->load(strXlsFile)){Close();return false;}m_pBookInfo->m_strFileName = strXlsFile;return true;
}//获取页数
long CExcelReaderLibXl::GetSheetCount()
{if (NULL == m_pBookInfo->m_pBook)return -1;return m_pBookInfo->m_pBook->sheetCount();
}long CExcelReaderLibXl::GetRows(long lSheetIndex)
{if (NULL == m_pBookInfo->m_pBook)return -1;if (lSheetIndex < 0 || lSheetIndex >= m_pBookInfo->m_pBook->sheetCount())return -1;libxl::Sheet* pSheet = m_pBookInfo->m_pBook->getSheet(lSheetIndex);if (NULL == pSheet)return -1;return (pSheet->lastRow() - pSheet->firstRow() + 1);
}long CExcelReaderLibXl::GetCols(long lSheetIndex)
{if (NULL == m_pBookInfo->m_pBook)return -1;if (lSheetIndex < 0 || lSheetIndex >= m_pBookInfo->m_pBook->sheetCount())return -1;libxl::Sheet* pSheet = m_pBookInfo->m_pBook->getSheet(lSheetIndex);if (NULL == pSheet)return -1;return (pSheet->lastCol() - pSheet->firstCol() + 1);
}//读取一行数据
bool CExcelReaderLibXl::ReadRowTexts(long lSheetIndex , long lRow, std::vector<CString>& arrValues)
{arrValues.clear();if (NULL == m_pBookInfo->m_pBook)return false;if (lSheetIndex < 0 || lSheetIndex >= m_pBookInfo->m_pBook->sheetCount())return false;libxl::Sheet* pSheet = m_pBookInfo->m_pBook->getSheet(lSheetIndex);if (NULL == pSheet)return false;long lRowNum = pSheet->lastRow() - pSheet->firstRow() + 1;long lColNum = pSheet->lastCol() - pSheet->firstCol() + 1;if (lRowNum < lRow)return false;CString strValue;//行列从0开始 for (long lColIndex = 0; lColIndex < lColNum; ++lColIndex){strValue.Empty();libxl::CellType curCellType = pSheet->cellType(lRow, lColIndex);if (curCellType == libxl::CellType::CELLTYPE_NUMBER){strValue.Format(_T("%f"), pSheet->readNum(lRow, lColIndex));strValue.TrimRight(_T("0"));strValue.TrimRight(_T("."));}else{strValue = pSheet->readStr(lRow, lColIndex);}arrValues.push_back(strValue);}return true;
}bool CExcelReaderLibXl::Close()
{if (NULL == m_pBookInfo->m_pBook)return true;m_pBookInfo->m_pBook->release();m_pBookInfo->m_pBook = NULL;return true;
}bool CExcelReaderLibXl::WirteCellText( long lSheetIndex , long lRow, long lCol, CString strValue )
{libxl::Sheet* pSheet = m_pBookInfo->m_pBook->getSheet(0);if (NULL == pSheet)return false;libxl::Font* pFont = m_pBookInfo->m_pBook->addFont();if (NULL == pFont)return false;pFont->setName(_T("宋体"));pFont->setSize(10);pFont->setColor(libxl::Color::COLOR_BLACK);libxl::Format* pFormat = m_pBookInfo->m_pBook->addFormat();if (NULL == pFormat)return false;pFormat->setFont(pFont);pFormat->setAlignH(libxl::AlignH::ALIGNH_LEFT);    pFormat->setPatternForegroundColor(libxl::Color::COLOR_NONE);if (!pSheet->writeStr(lRow,lCol, strValue,pFormat))return false;return true;
}bool CExcelReaderLibXl::Save()
{return m_pBookInfo->m_pBook->save(m_pBookInfo->m_strFileName);
}

转载于:https://my.oschina.net/u/2930533/blog/1857239

c++_导入/导出excel文件相关推荐

  1. EOS中如何实现导入导出excel文件

    阅读原文 导入导出excel文件 场景描述 将数据库表中的数据按照定义的EXCEL模板进行导出,下载到本地: 将EXCEL中的数据导入数据库相应的表中. 场景目标 通过本场景,解决EXCEL的导入导出 ...

  2. 【转】 (C#)利用Aspose.Cells组件导入导出excel文件

    Aspose.Cells组件可以不依赖excel来导入导出excel文件: 导入: public static System.Data.DataTable ReadExcel(String strFi ...

  3. java导入导出excel文件

    前言:该文章使用java集成poi来操作excel文件,此处只对poi相关api进行代码编写,对于poi的理论性知识,可在学习完这篇文章后,自行百度学习.建议大家跟着文章敲一遍代码. 创建一个mave ...

  4. 导入导出excel文件

    场景描述 将数据库表中的数据按照定义的EXCEL模板进行导出,下载到本地: 将EXCEL中的数据导入数据库相应的表中. 场景目标 通过本场景,解决EXCEL的导入导出问题,供项目中学习使用. 页面效果 ...

  5. 批量导入/导出Excel文件(Python+Matlab)

    简单整理了下批量导入/导出Excel的Python和Matlab代码. Matlab 连续数字型.xlsx文件(如file_1.xlsx, file_2.xlsx, file_3.xlsx) clc, ...

  6. mediawiki 导入导出Excel文件

     导入导出Excel表格需要使用插件Data_Transfer Data Transfer is an extension to MediaWiki that allows users to bo ...

  7. SpringBoot使用poi或EasyExcel导入导出Excel文件

    使用poi导入导出Excel 首先引入poi依赖包 03版本的Excel和07版本的Excel所需要的依赖不同,都需要导入. 记录问题: 最初导入的poi包为3.6版本.WorkBook类和Sheet ...

  8. EasyExcel 导入导出Excel文件

    文章目录 写在前面 1.maven依赖 2.导入Excel文件 2.1.读取表格文件 2.2.如果有多个sheet表格 2.3.监听器封装(也可不封装) 2.4.读取数据格式化(实体类中添加注解) 3 ...

  9. powerdesigner辅助导入导出excel文件

    在数据库建模中会用到Powerdesigner软件进行表结构的设计,有时候我们需要将Excel里面的表结构导入到Powerdesigner中生成模型文件,或者将Powerdesigner中已有的模型导 ...

最新文章

  1. android中设置ListView的选中的Item的背景颜色(附源码)
  2. SAP Commerce Cloud OCC User Role
  3. java类加public和不加public
  4. 解决Eclipse 项目报错:Unbound classpath container: ‘JRE System Library [JavaSE-1.7]
  5. 使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果
  6. WEB架构师成长之路-摘录
  7. jsoup教程_2 http-client 讲解
  8. Windows下编写的脚本无法运行?
  9. excel2016打开需要配置解决方法
  10. IOS根据经纬度算距离
  11. 如何快速提高产品互动能力?
  12. unity与3DMax的单位问题
  13. 1096: 水仙花数(函数专题,多实例)(细节较多)
  14. ikuai路由管理系统教程
  15. 链表:递归中删除结点不发生断链
  16. android 虚拟按键自定义,Android手机底部栏虚拟按键的操作
  17. laravel broadcas广播
  18. ITU标准介绍及下载索引
  19. python游戏最简单代码-python基础练习之几个简单的游戏
  20. JavaScript 双击禁止选中文字

热门文章

  1. php hmacsha1计算,PHP HMAC_SHA1 算法 生成算法签名
  2. oracle安装要多久,一次耗时4天的oracle安装过程
  3. csds原装的Markdown文档
  4. windows窗口移动到屏幕外,找回方法
  5. discuz 如何去掉自定义表情
  6. 12种Javascript解决常见浏览器兼容问题的方法
  7. IE8下div+CSS
  8. 关于大型网站技术演进的思考(六)--存储的瓶颈(6)
  9. Linux: .bash_profile 与 .bashrc 的区别
  10. wp_nav_menu($args)函数说明