之前,想在mfc中创建一个excel表格,一个里面有两张表,结果用office库文件函数操作没有成功,然后发现用CSpreadSheet建两张表,发现竟然在同一个excel文件中,可能很多人都知道,但是我是菜鸟,所以记录下。
sheets().get_Item(COleVariant(short)1));表示对第一个表格操作,sheets().get_Item(COleVariant(short)2));表示对第2个表格操作,
CSpreadSheet SS(csFilename,"详细信息");
CStringArray sampleArray;
CString tempString;
sampleArray.RemoveAll();
SS.BeginTransaction();
sampleArray.Add("序号");
sampleArray.Add("产品制令");
sampleArray.Add("批次");
sampleArray.Add("条形码");
sampleArray.Add("产品序号");
sampleArray.Add("工序名称");
sampleArray.Add("入时间");
sampleArray.Add("出时间");
sampleArray.Add("历时(s)");
SS.AddHeaders(sampleArray);
SS.Commit();
Colums = sampleArray.GetSize();
CSpreadSheet SS1(csFilename,"批次信息");
sampleArray.RemoveAll();
SS1.BeginTransaction();
sampleArray.Add("制令");
sampleArray.Add("批次");
sampleArray.Add("预设产品个数");
sampleArray.Add("实际入个数");
sampleArray.Add("实际出个数");
sampleArray.Add("批次历时(s)");
sampleArray.Add("历史入个数");
sampleArray.Add("历史出个数");
SS1.AddHeaders(sampleArray);
SS1.Commit();
然后后面在程序中可以各自修改各表的程序
CApplication app;
CWorkbooks books;
CWorkbook book;
CWorksheets sheets;
CWorksheet sheet;
CRange range;
CRange cols;
CFont0 font;
CString csFilename="";
Path = Cs_Zhiling + GongXu;
GetCurrentPath(g_szWorkDir);
csFilename.Format("%s\\%s.xls", g_szWorkDir,Path);
LPDISPATCH lpDisp;
HRESULT hr;
hr = CoInitialize(NULL);
//ASSERT(!FAILED(hr));
if(FAILED(hr))
{
AfxMessageBox("Failed to call Coinitialize()");
MyListShowSystem("Failed to call Coinitialize()");
}
COleVariant covOptional((long)
DISP_E_PARAMNOTFOUND,VT_ERROR);
if (!app.CreateDispatch(_T("Excel.Application")))
{
this->MessageBox(_T("无法创建Excel应用"));
MyListShowSystem("无法创建Excel应用");
return;
}
try
{
books = app.get_Workbooks();
}
catch (CException* e)
{
TCHAR szError[1024];
e->GetErrorMessage(szError,1024); // e.GetErrorMessage(szError,1024);
::AfxMessageBox(szError);
}
// app.put_Visible(TRUE);
// app.put_UserControl(TRUE);
books = app.get_Workbooks();
lpDisp = books.Open(csFilename,covOptional
,covOptional,covOptional,covOptional
,covOptional,covOptional,covOptional
,covOptional,covOptional,covOptional
,covOptional,covOptional,covOptional
,covOptional);
book=books.Add(covOptional);
book.AttachDispatch(lpDisp);
sheets = book.get_Sheets();
sheet = sheets.get_Item(COleVariant((short)1));
sheet = sheets.get_Item(COleVariant((short)2));
sheets().get_Item(COleVariant(short)1));表示对第一个表格操作,sheets().get_Item(COleVariant(short)2));表示对第2个表格操作,