请问怎么用VC把一个ACCESS表导入EXCEL中去!!!
解决方案 »
- 请教:RichEdit控件问题
- blog密码和社区密码是不是一样啊,我的blog怎么登陆不了啊?
- 又是ADO连接的问题
- 我在内存中生成一段HTML, 请问如何才能让 WebBrowse 控件来显示它?
- 寻专兼职人员
- 请问有谁使用过CAsyncSocketEx或CAsyncProxySocket类吗?
- ●●●★★怎么实现Global形式的char * 变量★★●●●
- 急!急!急!我的VC没有自动补全功能,用起来很不方便,怎末办?
- 十万火急!如何在Dialog上显示Menu??(我只能给到27分了)
- 寻问C++Builder技术站点
- 简单问题:c/s怎么实现?
- 想用SQL进行非精确查询,可是'%'这个字符怎样才能放到一个字符串里?
int txDSToExecl(TDataSet *ds)
{
Variant ex,newxls,sh;
try{
ex=CreateOleObject("Excel.Application");//啟動Excel
ex.OlePropertySet("Visible",(Variant)true); //使Excel啟動后可見
newxls=(ex.OlePropertyGet("Workbooks")).OleFunction("Add");//新建一新工作薄
sh=newxls.OlePropertyGet("ActiveSheet");
}catch(...)
{
//txMsgInf("啟動Excel出錯,可能由于Excel沒有正确安裝");
return -1;
}
if(ds->IsEmpty())
{
return 1;
}
ds->First();
sh.OlePropertyGet("Cells").OlePropertyGet("Font").OlePropertySet("Size",11);
for(int i=0;i<ds->FieldCount;i++)
{
sh.OlePropertyGet("Cells",1,i+1).OlePropertySet("Value",(TVariant)(ds->Fields->Fields[i]->FieldName));
{
// TODO: Add your control notification handler code here
// get Filename to save data in
static char BASED_CODE szFilter[] = "Worksheet Files (*.xls)|*.xls||All Files (*.*)|*.*||"; CFileDialog dlgFileOpen(FALSE,"xls",
NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
int structsize=0;
DWORD dwVersion,
dwWindowsMajorVersion,
dwWindowsMinorVersion;
//check system version
dwVersion = GetVersion();
dwWindowsMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
dwWindowsMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
if (dwVersion<0x80000000)
// if system Windows NT/2000
// display new dialog
structsize =88;
else
// if system is Windows 95/98
// display old dialog
structsize =76; dlgFileOpen.m_ofn.lStructSize=structsize;
TCHAR lpstrFilename[MAX_PATH] = "";
dlgFileOpen.m_ofn.lpstrFile=lpstrFilename; if(dlgFileOpen.DoModal()!=IDOK)
{
return;
}
CString m_file=dlgFileOpen.GetPathName();
// create excel table
try{
HRESULT hr;
CString m_filename[3]={"e:\\templ1.xls","e:\\templ2.xls",
"e:\\templ3.xls"};
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); int index=0;
index=m_tab.GetCurSel();
POSITION pos =m_list.GetFirstSelectedItemPosition();
int position=(int)pos;
CString id;
id=m_id[index].GetAt(position-1); // _Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
Range cols;
_Application app; // app is the Excel 9 _Application object // Start Excel and get Application object...
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("Couldn't start Excel.");
}
else
{
//Make Excel Visible and display a message
//app.SetVisible(TRUE);
books = app.GetWorkbooks();
//book = books.Add (covOptional);
book=books.Open(m_filename[index], // This is a test workbook.
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
covOptional); //Get the first sheet.
sheets =book.GetSheets();
sheet = sheets.GetItem(COleVariant((short)1));
IGetCurrDataPtr pGCD;
hr=pGCD.CreateInstance(CLSID_GetCurrData);
if(FAILED(hr)) _com_raise_error (hr);
CString strSQL;
ADOREAD::_RecordsetPtr pRS;
_variant_t vDate[32];
if(index==0) //故障
{
strSQL="SELECT * FROM TBL_REPORT_3 WHERE ID='";
strSQL+=id+"'";
pRS=pGCD->ReadData(L"APPADM",L"APPADM",L"DSN=APPADM",
(_bstr_t)strSQL,L"",L"",
L"",0);
if(FAILED(hr)) _com_raise_error (hr);
if(pRS->EndOfFile==VARIANT_FALSE)
{
for(int i=0;i<30;i++)
{
vDate[i]=pRS->Fields->GetItem((short)i)->Value;
}
}
CString pos[30]={"B4","F4","I4","B13","E13","H13","J13",
"D7","E7","D8","E8","D9","E9","D10",
"E10","D12","E12","H7","I7","H8",
"I8","H9","I9","H10","I10","H11",
"I11","H12","I12"};
for(int i=1;i<30;i++)
{
range = sheet.GetRange(COleVariant(pos[i-1]), COleVariant(pos[i-1]));
range.SetValue(vDate[i]);
}
VARIANT vFileName;
vFileName.vt=VT_BSTR;
vFileName.bstrVal=(_bstr_t)m_file;
book.SaveAs(vFileName, // This is a test workbook.
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
0,
covOptional,
covOptional,
covOptional,
covOptional);
app.SetVisible(TRUE);
//完成
}else if(index==1) //明细
{
strSQL="SELECT * FROM TBL_REPORT_2 WHERE ID='";
strSQL+=id+"'";
pRS=pGCD->ReadData(L"APPADM",L"APPADM",L"DSN=APPADM",
(_bstr_t)strSQL,L"",L"",
L"",0);
if(FAILED(hr)) _com_raise_error (hr);
CString pos[29]={"A5","B5","C5","D5","E5","F5","G5",
"H5","I5","J5","K5","L5","M5","N5",
"O5","P5","Q5","R5","S5","T5",
"U5","V5","W5","X5","Y5","Z5",
"AA5","AB5","AC5"};
while(pRS->EndOfFile==VARIANT_FALSE)
{
for(int i=0;i<32;i++)
{
vDate[i]=pRS->Fields->GetItem((short)i)->Value;
}
range=sheet.GetRange(COleVariant("A5"), COleVariant("AC5"));
range.Activate();
range.Insert(COleVariant((short)2));
for(i=4;i<31;i++)
{
range = sheet.GetRange(COleVariant(pos[i-4]), COleVariant(pos[i-4]));
range.SetValue(vDate[i-1]);
}
pRS->MoveNext();
}
VARIANT vFileName;
vFileName.vt=VT_BSTR;
vFileName.bstrVal=(_bstr_t)m_file;
book.SaveAs(vFileName, // This is a test workbook.
covOptional,
covOptional,
covOptional,
covOptional,
covOptional,
0,
covOptional,
covOptional,
covOptional,
covOptional);
app.SetVisible(TRUE);
//完成
}else if(index==2)
{
}
}
}catch(_com_error &e)
{
AfxMessageBox(e.Description());
}
}
你要的话就留下EMAIL
我本来有一篇文章的
但现在不知去哪儿了
是用DAO写的,很简单的
这还有什么好说的?
ADO直接支持文件型数据库的导来导去,也可以直接导到文本文件和HTML文件里面。