下面两个文件是逻辑处理文件。已经调通。

CExcelmadetoolDlg.h

在这里插入代码片
// ExcelmadetoolDlg.h : header file
//#if !defined(AFX_EXCELMADETOOLDLG_H__9A8C90C3_A3D6_4DCB_BC96_4F62C05EEE78__INCLUDED_)
#define AFX_EXCELMADETOOLDLG_H__9A8C90C3_A3D6_4DCB_BC96_4F62C05EEE78__INCLUDED_#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000/
// CExcelmadetoolDlg dialog
#include "tlhelp32.h"   //头文件
class CExcelmadetoolDlg : public CDialog
{// Construction
public:CExcelmadetoolDlg(CWnd* pParent = NULL);    // standard constructor// Dialog Data//{{AFX_DATA(CExcelmadetoolDlg)enum { IDD = IDD_EXCELMADETOOL_DIALOG };// NOTE: the ClassWizard will add data members here//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CExcelmadetoolDlg)int madeExcel();void GetEditworth();//获取控件的值void GetSNAllworth();//获取sn总共的值long chToLong(const char *ch,int len);//用于处理填入序列号的数据void  StrtoInt(CString *const putStr,int *const putInt);//字符串转换为int,不能改变指针地址CString strSNAllPath;//用于添加SN表单的路径CString strADDRPath;//用于添加地址表单的路径int startLine;//起始行int EndLine;//终止行CString StartSN;//起始SN序列号CString CSLogistics;//物流公司CString CSLogisticsNumber;//物流单号int IClientSnNum;//客户SN序列号总数CString SheetName;//表单名字int  impliedSNAllLine;//默认打印总的表格数字protected:virtual void DoDataExchange(CDataExchange* pDX);  // DDX/DDV support//EDIT控件CEdit* pBoxStart;CEdit* pBoxEnd;//}}AFX_VIRTUAL// Implementation
protected:HICON m_hIcon;// Generated message map functions//{{AFX_MSG(CExcelmadetoolDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnOk2();afx_msg void Onaddr();virtual void OnOK();//}}AFX_MSGDECLARE_MESSAGE_MAP()
};//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.#endif // !defined(AFX_EXCELMADETOOLDLG_H__9A8C90C3_A3D6_4DCB_BC96_4F62C05EEE78__INCLUDED_)

CExcelmadetoolDlg.cpp

在这里插入代码片
// ExcelmadetoolDlg.cpp : implementation file
//#include "stdafx.h"
#include "Excelmadetool.h"
#include "ExcelmadetoolDlg.h"
#include <comdef.h>
#include "excel.h"
#include <shlwapi.h>
#include <sstream>
#include <string>
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <limits.h>
#include <windows.h>#pragma comment(lib,"shlwapi.lib") //如果没有这行,会出现link错误
//#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif//要操作表,必须先逐步获取Workbooks->Workbook->Worksheets->Worksheet->Range
//并设置全局变量
_Application g_app;
Workbooks g_books;
_Workbook g_book;
Sheets   g_sheets;        //低版本Office请将这改为 WorkSheets
_Worksheet g_sheet;
Range g_range;
Font font;
int SNnum=0;/
// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog
{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support//}}AFX_VIRTUAL// Implementation
protected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAP
END_MESSAGE_MAP()/
// CExcelmadetoolDlg dialogCExcelmadetoolDlg::CExcelmadetoolDlg(CWnd* pParent /*=NULL*/): CDialog(CExcelmadetoolDlg::IDD, pParent)
{//{{AFX_DATA_INIT(CExcelmadetoolDlg)// NOTE: the ClassWizard will add member initialization here//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CExcelmadetoolDlg::DoDataExchange(CDataExchange* pDX)
{CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CExcelmadetoolDlg)// NOTE: the ClassWizard will add DDX and DDV calls here//}}AFX_DATA_MAP
}BEGIN_MESSAGE_MAP(CExcelmadetoolDlg, CDialog)//{{AFX_MSG_MAP(CExcelmadetoolDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDOK2, OnOk2)ON_BN_CLICKED(IDOK3, Onaddr)//}}AFX_MSG_MAP
END_MESSAGE_MAP()/
// CExcelmadetoolDlg message handlersBOOL CExcelmadetoolDlg::OnInitDialog()
{CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog.  The framework does this automatically//  when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);            // Set big iconSetIcon(m_hIcon, FALSE);     // Set small icon// TODO: Add extra initialization here//绑定控件pBoxStart = (CEdit*) GetDlgItem(IDC_EDIT1);pBoxEnd   = (CEdit*) GetDlgItem(IDC_EDIT2);//初始化startLine=0;EndLine=0;//给定控件默认值pBoxStart-> SetWindowText( "2" );pBoxEnd-> SetWindowText( "2" );AfxOleInit();if(!g_app.CreateDispatch("Excel.Application")){AfxMessageBox("无法启动Excel服务器");return;}SetWindowText("Excel表格处理工具");return TRUE;  // return TRUE  unless you set the focus to a control
}void CExcelmadetoolDlg::OnSysCommand(UINT nID, LPARAM lParam)
{if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}
}// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.void CExcelmadetoolDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}
}// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CExcelmadetoolDlg::OnQueryDragIcon()
{return (HCURSOR) m_hIcon;
}void CExcelmadetoolDlg::OnOk2()
{// TODO: Add your control notification handler code hereCOleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); CFileDialog dlg(true,"配置文件",NULL,0, "表格文件(.xls)|*.xls|表格文件(.xlsx)|*.xlsx");//打开文件if(IDOK==dlg.DoModal())strSNAllPath =dlg.GetPathName();//没有添加提示,工作簿创建
//    if(!g_app.CreateDispatch("Excel.Application"))
//    {//        AfxMessageBox("无法启动Excel服务器");
//        return;
//    }//利用模板文件建立新文档 g_books.AttachDispatch(g_app.GetWorkbooks(),true); g_book.AttachDispatch(g_books.Add(_variant_t(strSNAllPath)),true);//    //获取所有的工作簿
//    g_books = g_app.GetWorkbooks();
//
//    //用来锁定对应的工作簿
//    g_books.AttachDispatch(g_app.GetWorkbooks(),true);
//    g_book = g_books.Open( strSNAllPath,covOptional,covOptional,
//          covOptional,covOptional,covOptional,covOptional,
//          covOptional,covOptional,covOptional,covOptional,
//          covOptional,covOptional,covOptional,covOptional);//得到Worksheets,工作表g_sheets.AttachDispatch(g_book.GetWorksheets(),true);g_sheet=g_sheets.GetItem(COleVariant((short)1));//获得使用的区域g_range.AttachDispatch(g_sheet.GetUsedRange(),true);//获取使用的行数int usedrowNum=0;g_range.AttachDispatch(g_range.GetRows(),true);usedrowNum=g_range.GetCount();//获取使用的列数int usedrowCol=0;g_range.AttachDispatch(g_range.GetColumns(),true);usedrowCol=g_range.GetCount();//获取第一行第一列的值COleVariant vResult;g_range.AttachDispatch(g_sheet.GetCells());g_range.AttachDispatch(g_range.GetItem(COleVariant((long)2), COleVariant((long)1)).pdispVal);//行与列vResult = g_range.GetValue2();//获取工作表的名字CString sheetName=g_sheet.GetName();//展现文档
//  g_app.SetVisible(true); //释放对象 g_books.Close();g_app.Quit();
g_range.ReleaseDispatch();
g_sheet.ReleaseDispatch();
g_sheets.ReleaseDispatch();
g_book.ReleaseDispatch();
g_books.ReleaseDispatch();
g_app.ReleaseDispatch(); }void CExcelmadetoolDlg::OnOK()
{// TODO: Add extra validation here//_Application g_Newapp;
//Workbooks g_Newbooks;
//_Workbook g_Newbook;
//Sheets   g_Newsheets;        //低版本Office请将这改为 WorkSheets
//_Worksheet g_Newsheet;
//Range g_Newrange;
//Font Newfont;//GetEditworth();//获取EDIT控件的值if( FAILED( CoInitialize(NULL) ) )
{AfxMessageBox("初始化COM支持库失败!");
}//利用模板文件建立新文档
//g_Newbooks.AttachDispatch(g_Newapp.GetWorkbooks(),true);
// g_Newbook.AttachDispatch(g_Newbooks.Add(_variant_t(strADDRPath)),true);
//  //得到Worksheets
//g_Newsheets.AttachDispatch(g_Newbook.GetWorksheets(),true);
//得到sheet1
//g_Newsheet.AttachDispatch(g_Newsheets.GetItem(_variant_t("sheet1")),true);
//得到全部Cells,此时,g_range是cells的集合
//g_Newrange.AttachDispatch(g_Newsheet.GetCells(),true);
//设置1行1列的单元的值
//g_Newrange.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("This Is A Excel Test Program!"));
//得到所有的列
//g_Newrange.AttachDispatch(g_Newsheet.GetColumns(),true);
//得到第一列
//g_Newrange.AttachDispatch(g_Newrange.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);
//设置列宽
//g_Newrange.SetColumnWidth(_variant_t((long)20));
//Range cols;
//cols = g_Newrange.GetEntireColumn();//选择整列,并设置宽度为自适应
//cols.AutoFit();
//调用模板中预先存放的宏
//g_app.Run(_variant_t("CopyRow"),_variant_t((long)10),  _variant_t(vtMissing),_variant_t(vtMissing),
//_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),
//_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),
//_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),
//_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing),_variant_t(vtMissing));
//制作表格
//font=g_range.GetFont();
//  g_range=g_sheet.GetRange(COleVariant("A2"),COleVariant("A2"));
//g_range.SetFormula(COleVariant("=RAND()*100000"));
//g_range.SetNumberFormat(COleVariant("$0.00"));
//制作表格内容//填写标题.
//   g_range = g_sheet.GetRange(COleVariant("A1"),COleVariant("A1"));
//   g_range.SetNumberFormatLocal(COleVariant("列1"));
//   g_range = g_sheet.GetRange(COleVariant("B1"),COleVariant("B1"));
//   g_range.SetNumberFormatLocal(COleVariant("列2"));
//   g_range = g_sheet.GetRange(COleVariant("C1"),COleVariant("C1"));
//   g_range.SetNumberFormatLocal(COleVariant("列3"));
//   g_range = g_sheet.GetRange(COleVariant("D1"),COleVariant("D1"));
//   g_range.SetNumberFormatLocal(COleVariant("列4"));
//   g_range = g_sheet.GetRange(COleVariant("E1"),COleVariant("E1"));
//   g_range.SetNumberFormatLocal(COleVariant("列5"));// g_Newrange.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("SN序列号"));
// g_Newrange.SetItem(_variant_t((long)1),_variant_t((long)2),_variant_t("物流单号"));////获取所有的工作簿COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); if(!g_app.CreateDispatch("Excel.Application")){AfxMessageBox("无法启动Excel服务器");return;}//为了防止用户多点MessageBox("正在写入,请稍后!");g_books = g_app.GetWorkbooks();   //用来锁定对应的工作簿           g_books.AttachDispatch(g_app.GetWorkbooks(),true);  g_book.AttachDispatch(g_books.Add(_variant_t(strADDRPath)),true);/*g_book = g_books.Open( strADDRPath,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);*///得到Worksheets,工作表g_sheets.AttachDispatch(g_book.GetWorksheets(),true);g_sheet=g_sheets.GetItem(COleVariant((short)1));//获得使用的区域g_range.AttachDispatch(g_sheet.GetUsedRange(),true);//获取使用的行数int usedrowNum=0;g_range.AttachDispatch(g_range.GetRows(),true);usedrowNum=g_range.GetCount(); //获取使用的列数int usedrowCol=0;g_range.AttachDispatch(g_range.GetColumns(),true);usedrowCol=g_range.GetCount();//获取收货公司表单//获取第2行第6列的值GetEditworth();//函数出现问题//取值
//    CString strStart;
//  CString strEnd;
//
//    pBoxStart-> GetWindowText(strStart);
//  pBoxEnd-> GetWindowText(strEnd);//    startLine= atoi( LPCTSTR(strStart) );
//   EndLine= atoi( LPCTSTR(strEnd) );for(int i=startLine;i<EndLine+1;i++){//获取第I行表单总数//        COleVariant vResultSNALL;
//      g_range.AttachDispatch(g_sheet.GetCells());
//        g_range.AttachDispatch(g_range.GetItem(COleVariant((long)i), COleVariant((long)6)).pdispVal);//行与列
//        vResultSNALL = g_range.GetValue2();_variant_t var;CString tmpStr;//存储每个格子的数据g_range.AttachDispatch(g_sheet.GetCells());var =g_range.GetItem(_variant_t((long)i),_variant_t((long)7));//读取第r行c列的数据,注意行和列都是从1开始tmpStr.Format("%s",(char*)(_bstr_t)var);//转换成CStringStrtoInt(&tmpStr,&IClientSnNum);//CString CSnAll;//CSnAll.Format("%f", vResultSNALL.dblVal); //SN起始数var =g_range.GetItem(_variant_t((long)i),_variant_t((long)8));//读取第r行c列的数据,注意行和列都是从1开始StartSN.Format("%s",(char*)(_bstr_t)var);//转换成CString//物流公司名字var =g_range.GetItem(_variant_t((long)i),_variant_t((long)10));//读取第r行c列的数据,注意行和列都是从1开始CSLogistics.Format("%s",(char*)(_bstr_t)var);//转换成CString//物流单号var =g_range.GetItem(_variant_t((long)i),_variant_t((long)11));//读取第r行c列的数据,注意行和列都是从1开始CSLogisticsNumber.Format("%s",(char*)(_bstr_t)var);//转换成CString//     COleVariant vResultWuliu;
//        g_range.AttachDispatch(g_range.GetItem(COleVariant((long)i), COleVariant((long)9)).pdispVal);//行与列
//        vResultWuliu = g_range.GetValue2();
//      CSLogistics=(BSTR)vResultWuliu.pbstrVal;//CSLogistics.Format("%f", vResultWuliu.dblVal); //给定表单名字CString strCOmpany;CString strPeopleName;//获取收货公司序号CString CNumberComper;var =g_range.GetItem(_variant_t((long)i),_variant_t((long)3));//读取第r行c列的数据,注意行和列都是从1开始CNumberComper.Format("%s",(char*)(_bstr_t)var);//转换成CString//获取公司名字var =g_range.GetItem(_variant_t((long)i),_variant_t((long)4));//读取第r行c列的数据,注意行和列都是从1开始strCOmpany.Format("%s",(char*)(_bstr_t)var);//转换成CString//      COleVariant vResultGetcompany;
//        g_range.AttachDispatch(g_range.GetItem(COleVariant((long)i), COleVariant((long)3)).pdispVal);//行与列
//        vResultGetcompany = g_range.GetValue2();
//      strCOmpany=(BSTR)vResultGetcompany.pbstrVal;//strCOmpany.Format("%f", vResultGetcompany.dblVal); //获取人名var =g_range.GetItem(_variant_t((long)i),_variant_t((long)4));//读取第r行c列的数据,注意行和列都是从1开始strPeopleName.Format("%s",(char*)(_bstr_t)var);//转换成CString//除掉人名后面的电话号码//rPeopleName = strPeopleName.substr(0, strPeopleName.length() - 11);//rPeopleName.erase(strPeopleName.end() - 1);//     COleVariant vResultGetPeopleName;
//        g_range.AttachDispatch(g_range.GetItem(COleVariant((long)i), COleVariant((long)4)).pdispVal);//行与列
//        vResultGetPeopleName = g_range.GetValue2();
//      strPeopleName=(BSTR)vResultGetcompany.pbstrVal;//  strPeopleName.Format("%f", vResultGetPeopleName.dblVal); //表单名字SheetName=CNumberComper+strCOmpany+strPeopleName;madeExcel();}//导入数据.
//   putlonth=Modeworth.GetLength();
//   putWorth=Modeworth.Right(putlonth-3);
//   //总行数
//   int AllrowsWorth=100;//madeExcel() ;
//int m,n;
//int rows=50;
//打印预览
g_book.SetSaved(true);
g_app.SetVisible(true);
//
//g_book.PrintPreview(_variant_t(false));
//释放对象 g_books.Close();g_app.Quit();
g_range.ReleaseDispatch();
g_sheet.ReleaseDispatch();
g_sheets.ReleaseDispatch();
g_book.ReleaseDispatch();
g_books.ReleaseDispatch();
g_app.ReleaseDispatch();
//
MessageBox("生产表单完毕!!");
CDialog::OnOK();
}//创建表格
int CExcelmadetoolDlg::madeExcel()
{_Application  g_Newapp;
Workbooks     g_Newbooks;
_Workbook     g_Newbook;
Sheets        g_Newsheets;        //低版本Office请将这改为 WorkSheets
_Worksheet    g_Newsheet;
Range         g_Newrange;
Font          Newfont;if( FAILED( CoInitialize(NULL) ) )
{AfxMessageBox("初始化COM支持库失败!");
}
//AfxOleInit();//会引起中断
//  //导出//g_app.ReleaseDispatch();
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
if(!g_Newapp.CreateDispatch("Excel.Application"))
{MessageBox("无法创建Excel应用!");// exit(1);
}
//利用模板文件建立新文档
g_Newbooks.AttachDispatch(g_Newapp.GetWorkbooks(),true); //g_Newbook.AttachDispatch(g_Newbooks.Add(_variant_t(strADDRPath)),true);
g_Newbook=g_Newbooks.Add(covOptional); //得到Worksheets
g_Newsheets.AttachDispatch(g_Newbook.GetWorksheets(),true);
//得到sheet1
//g_Newsheet.AttachDispatch(g_Newsheets.GetItem(_variant_t("sheet1")),true); //得到第一个工作表
g_Newsheet=g_Newsheets.GetItem(COleVariant((short)1));//获得使用的区域
//得到全部Cells,此时,g_range是cells的集合
g_Newrange.AttachDispatch(g_Newsheet.GetCells(),true);
//设置1行1列的单元的值
//g_Newrange.SetItem(_variant_t((long)1),_variant_t((long)1),_variant_t("This Is A Excel Test Program!"));
//得到所有的列
g_Newrange.AttachDispatch(g_Newsheet.GetColumns(),true);
//得到第一列
//g_Newrange.AttachDispatch(g_Newrange.GetItem(_variant_t((long)1),vtMissing).pdispVal,true);
//设置列宽
g_Newrange.SetColumnWidth(_variant_t((long)20));
Range cols;
cols = g_Newrange.GetEntireColumn();//选择整列,并设置宽度为自适应
cols.AutoFit();
cols.ReleaseDispatch();
bool TFvisible=false;
g_Newapp.SetVisible(TFvisible);  //不加文件删不掉
g_Newapp.SetUserControl(TRUE);CString SaveFilePath=_T("D:\\SaveExcel");CString ExcelName=SheetName+".xlsx";
CString SaveExcelPath="D:\\SaveExcel\\"+ExcelName;
if(!PathIsDirectory(SaveFilePath))
{//CreateDirectioy(SaveExcelPath,NULL);AfxMessageBox("存储路径不存在!请在D盘根目录下建立SaveExcel文件夹,注意大小写");exit(1);
}//选择工作表中A1:A1单元格区域g_Newrange=g_Newsheet.GetRange(COleVariant("A1"),COleVariant("A1")); g_Newrange.SetValue2(COleVariant("SN序列号"));  //range.SetValue()必为range.SetValue2() //g_Newrange.SetFormulaR1C1( COleVariant("SN序列号") );//选择工作表中A1:B1单元格区域g_Newrange=g_Newsheet.GetRange(COleVariant("B1"),COleVariant("B1")); g_Newrange.SetValue2(COleVariant("物流公司物流单号"));  //range.SetValue()必为range.SetValue2()//将CString转化为char数组char szTemp[30]="";memcpy(szTemp,StartSN,StartSN.GetLength()); //strcpy_s(szTemp, StartSN);int numIS0;//表示前面有多少0,最后添加//去掉char数组前面的0int snLonth=strlen(szTemp);for (int i=0;i<strlen(szTemp);i++) {if (szTemp[i]!='0'){ numIS0=i;break; //找出前面有几个0}}strcpy(szTemp,szTemp+i); // 搬动字符串,版去掉领头的零unsigned long a = 0;unsigned long b = 1;unsigned long sum = 0;for(i =strlen(szTemp)-1;i >= 0;i--){a= szTemp[i] - '0';a =a*b;sum += a;b = b*10;}int szTlong=strlen(szTemp);//CString CTempSNnumber;CTempSNnumber.Format("%s",szTemp);
//  char ch[]="123456789123456";
// unsigned __int64 LLsum=chToLong(ch,strlen(ch));
// unsigned __int64  mmmm=atoi(CTempSNnumber);
//
//
// unsigned __int64 LStartSN;//= atol(a);
// unsigned __int64 LongthSN= _ttol(CTempSNnumber);//unsigned __int64 UI64SNnumber=0;sscanf((LPSTR)(LPCTSTR)CTempSNnumber,"%I64d",&UI64SNnumber);//long filesize;
//filesize=atol(m_FileSize.GetBuffer(m_FileSize.GetLength()));//  char * pchar;
// pchar=(LPSTR)(LPCSTR)StartSN;for(int j=2;j<IClientSnNum+2;j++ ){char c='0';CTempSNnumber.Format("%I64d",UI64SNnumber);for(int n=0;n<numIS0;n++){CTempSNnumber=c+CTempSNnumber;}CTempSNnumber="'"+CTempSNnumber;//StartSN=CTempSNnumber;// StartSN.Format(_T("%I64d"),IStartSN);//g_Newrange.SetItem(_variant_t((long)j),_variant_t((long)0),_variant_t(CTempSNnumber));//        g_Newrange.Select();
//              g_Newrange.SetNumberFormatLocal(COleVariant("@"));g_Newrange.SetItem(_variant_t((long)j),_variant_t((long)0),COleVariant(CTempSNnumber));if(j<3){g_Newrange.SetItem(_variant_t((long)j),_variant_t((long)1),_variant_t(CSLogistics+CSLogisticsNumber));}//  g_Newrange.SetItem(_variant_t((long)j),_variant_t((long)2),_variant_t(CSLogisticsNumber));//CSLogisticsNumber//       //水平对齐:默认=1,居中=-4108,左=-4131,右=-4152 //垂直对齐:默认=2,居中=-4108,左=-4160,右=-4107 //设置齐方式为水平垂直居中
//       g_Newrange.SetHorizontalAlignment(_variant_t((long)-4131));
//       g_Newrange.SetVerticalAlignment(_variant_t((long)-4160)); ////填入的sn自动加1UI64SNnumber++;}g_Newbook.SaveAs(COleVariant(SaveExcelPath), covOptional,covOptional, covOptional,covOptional, covOptional, (long)0, covOptional, covOptional, covOptional,covOptional, covOptional);//    //释放对象(相当重要!)
//    g_book.ReleaseDispatch();
//    g_books.ReleaseDispatch();
//  g_range.ReleaseDispatch();
//  g_sheet.ReleaseDispatch();
//
//
//    //退出程序
//    g_app.Quit();
//    //m_ExlApp一定要释放,否则程序结束后还会有一个Excel进程驻留在内存中,而且程序重复运行的时候会出错
//    g_app.ReleaseDispatch();g_Newbooks.Close();g_Newapp.Quit();
g_Newrange.ReleaseDispatch();
g_Newsheet.ReleaseDispatch();
g_Newsheets.ReleaseDispatch();
g_Newbook.ReleaseDispatch();
g_Newbooks.ReleaseDispatch();
g_Newapp.ReleaseDispatch(); return 0;
}void CExcelmadetoolDlg::Onaddr()
{      COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); CFileDialog dlg(true,"配置文件",NULL,0, "表格文件(.xls)|*.xls|表格文件(.xlsx)|*.xlsx");//打开文件if(IDOK==dlg.DoModal())strADDRPath =dlg.GetPathName();//获取所有的工作簿if(!g_app.CreateDispatch("Excel.Application")){AfxMessageBox("无法启动Excel服务器");return;}//  g_books = g_app.GetWorkbooks();   //用来锁定对应的工作簿           g_books.AttachDispatch(g_app.GetWorkbooks(),true);  g_book.AttachDispatch(g_books.Add(_variant_t(strADDRPath)),true);/*g_book = g_books.Open( strADDRPath,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);*///得到Worksheets,工作表g_sheets.AttachDispatch(g_book.GetWorksheets(),true);g_sheet=g_sheets.GetItem(COleVariant((short)1));//获得使用的区域g_range.AttachDispatch(g_sheet.GetUsedRange(),true);//获取使用的行数int usedrowNum=0;g_range.AttachDispatch(g_range.GetRows(),true);usedrowNum=g_range.GetCount(); impliedSNAllLine=usedrowNum;//给控件设立建表默认行CString CTempSNLine;CTempSNLine.Format(_T("%d"),impliedSNAllLine);pBoxEnd-> SetWindowText(CTempSNLine);//获取使用的列数int usedrowCol=0;g_range.AttachDispatch(g_range.GetColumns(),true);usedrowCol=g_range.GetCount();//获取工作表的名字CString sheetName=g_sheet.GetName();//展现文档//g_app.SetVisible(true);//释放g_books.Close();g_app.Quit();g_range.ReleaseDispatch(); g_sheet.ReleaseDispatch(); g_sheets.ReleaseDispatch(); g_book.ReleaseDispatch(); g_books.ReleaseDispatch(); g_app.ReleaseDispatch();
}void CExcelmadetoolDlg::GetEditworth()
{//取值CString strStart;CString strEnd;pBoxStart-> GetWindowText(strStart);pBoxEnd-> GetWindowText(strEnd);//   int nGetInt = atoi( LPCTSTR(strEnd) );StrtoInt( &strStart, &startLine) ;StrtoInt( &strEnd, &EndLine) ;}void CExcelmadetoolDlg::StrtoInt(CString * const putStr, int * const putInt)
{// const char * pchar=(LPSTR)(LPCSTR)(*putStr);*putInt = atoi(*putStr);}void CExcelmadetoolDlg::GetSNAllworth()
{COleVariant vResult;COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  if( FAILED( CoInitialize(NULL) ) ){AfxMessageBox("初始化COM支持库失败!");}//没有添加提示,工作簿创建//  COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); CFileDialog dlg(true,"配置文件",NULL,0, "表格文件(.xls)|*.xls|表格文件(.xlsx)|*.xlsx");//打开文件if(IDOK==dlg.DoModal())strADDRPath =dlg.GetPathName();//获取所有的工作簿g_books = g_app.GetWorkbooks();   //用来锁定对应的工作簿           g_books.AttachDispatch(g_app.GetWorkbooks(),true);   g_book = g_books.Open( strADDRPath,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional);//得到Worksheets,工作表g_sheets.AttachDispatch(g_book.GetWorksheets(),true);g_sheet=g_sheets.GetItem(COleVariant((short)1));//获得使用的区域g_range.AttachDispatch(g_sheet.GetUsedRange(),true);//获取使用的行数int usedrowNum=0;g_range.AttachDispatch(g_range.GetRows(),true);usedrowNum=g_range.GetCount(); //获取使用的列数int usedrowCol=0;g_range.AttachDispatch(g_range.GetColumns(),true);usedrowCol=g_range.GetCount();//获取第2行第一列的值g_range.AttachDispatch(g_sheet.GetCells());g_range.AttachDispatch(g_range.GetItem(COleVariant((long)2), COleVariant((long)1)).pdispVal);//行与列vResult = g_range.GetValue2();//获取工作表的名字CString sheetName=g_sheet.GetName();//展现文档//g_app.SetVisible(true);//释放g_books.Close();g_app.Quit();g_range.ReleaseDispatch(); g_sheet.ReleaseDispatch(); g_sheets.ReleaseDispatch(); g_book.ReleaseDispatch(); g_books.ReleaseDispatch(); g_app.ReleaseDispatch();
}long CExcelmadetoolDlg::chToLong(const char *ch,int len)
{long sum=0;unsigned __int64 aa=LONG_MAX;for(int i=len-1;i>=0;i--){long mm=long(ch[i]);long nn=mm - 48;sum+=(mm - 48) * pow(10,len-1-i);}return sum;}

利用vc的mfc做的Excel表格处理工具相关推荐

  1. excel表格打不开是什么原因_为什么你做的Excel表格,总是这么丑?

    这是我们最常见到的表格 制作很简单,但也是一种很习惯的丑. 为什么不把表格的灰网格线去掉呢,会让你的表格更干净.突出 视图 - 去掉网络线前的勾 来个大清洗,把所有网络线全部去掉 按Ctrl + Sh ...

  2. java中使用jxl导出excel表格的工具类(全网唯一亲测可用,在原来基础上扩展)

    java中后台导出excel的话,有两种方案,一是使用poi(不过由于是windows版本的,存在不兼容,但功能更多,更强大),而是使用jxl(纯java编写,不过兼容,简单一些),可以设置输出的ex ...

  3. excel乘法公式怎么输入_你加班3小时做的Excel表格,我只需1分钟!(建议收藏)

    今日干货领取 开始之前,老师要强烈推荐大家一个公众号给大家,这个号目前已聚集近60W财务小伙伴,在会计圈财税领域排名前列.每天只精选4.5条精华内容,封面统一.干货多多.情怀满满.他们还有专业答疑社群 ...

  4. 怎么利用计算机公式计算完成比例,excel表格数据计算所占比例公式的使用教程...

    Excel中经常需要使用到公式计算所占比例,所占比例具体该如何利用函数进行计算呢?接下来是学习啦小编为大家带来的excel表格数据计算所占比例公式的使用教程,供大家参考. excel表格数据计算所占比 ...

  5. 如何在表格里做计算机统计表,(excel怎么做统计表)excel表格如何制作数据表

    Excel如何制作统计数据 Excel制作统计图 Excel有较强图功能,可根据需要选择各的图形.Excel的统计图:包括柱形图.条形图.折线图.饼图.散点图.面积图.环形图.雷达图.曲面图.气泡图. ...

  6. 工作系列Java开发之利用Java实现ERP系统中Excel表格的导出

    工欲善其事必先利其器 前言: 最好的学习方式就是分享,喜欢就三连一下吧(关注,转发,点赞). 今天的内容开始之前,我先申明一下,今天的知识很重要! 很重要! 很重要 ,Excel表格的导出在正式步入公 ...

  7. 【Python数据分析】利用Python快速对两个EXCEL表格进行内容比较并找出差异

    如何快速找到两个EXCEL表格的数据差异?今天就与大家分享如何利用Python数据分析3分钟搞定,不管EXCEL表格有多少行数据,代码总是那么几行.不多说了,上案例(文末附Python数据分析案例下载 ...

  8. 利用VBA代码合并多个Excel表格

    步骤1:将待合并表格放入同一文件夹 步骤2:在文件件中新建一个表格 步骤3:在新表格中右击"sheet1"--"查询代码" 步骤4:输入上述代码,并运行子程序. ...

  9. java代码实现导出Excel表格、工具ssm框架、maven、idea

    第一步.导入依赖 <!--生成excel文件--><dependency><groupId>org.apache.poi</groupId><ar ...

最新文章

  1. sql获取一张表所有的字段_SQL语句19问
  2. 模板元编程实现素数判定
  3. 直观秒懂:这波动图全是泵,应有尽有!
  4. spring boot shiro redis整合基于角色和权限的安全管理-Java编程
  5. xshell 输入w 命令后报错 66 column window is too narrow
  6. data.getData()返回的Uri
  7. Python爬虫反反爬:CSS反爬加密彻底破解!
  8. Jlink之J-Scope虚拟示波器
  9. round函数c语言,fegetround
  10. mysql udf 执行命令_mylab_sys_exec UDF调用mysql外部系统命令(For linux)
  11. ngrok穿透服务器搭建
  12. 快手Y-tech:GAN在短视频中的AI特效实践
  13. asio(三)、bind
  14. ENC28J60学习笔记——第1部分
  15. fastapi获取访客真实ip
  16. Spring-boot mvn 打包之后Java -jar找不到启动类的问题
  17. 四十年编程感想 -- 记录
  18. Coding时间加起来8万小时,四位老司机唐赓 武爱敏 大师兄(刘歧)刘连响带你多媒体开发...
  19. C语言程序——计算一元二次方程ax^2+bx+c=0的根
  20. Permission denied: user=dr.who, access=READ_EXECUTE, inode=“/tmp“:root:super

热门文章

  1. 人工智能缺陷与误觉:让机器产生幻觉的「怪异事件」
  2. 阿里云开启多媒体搜索新时代,发布全域精准图像搜索
  3. 深入Oracle的left join中on和where的区别详解
  4. 我开发中总结的小技巧
  5. 【Hibernate】Hibrenate POJO 类在序列化时遇到的问题
  6. 浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓
  7. Dynamic LAN-to-LAN ××× 之 Router-to-Router
  8. Linux System and Performance Monitoring
  9. php 这样写日志 sleep你会了吗?
  10. DedeCms模板防盗的方法