我现在在做一个管理软件,用的是VC++6.0+SQL数据库,我想问的是系统运行过后出现一个数据列表,如何将这个数据表中的数据导入到EXCEL中呢,就是在运行C++程序时通过一个控件就可以将数据导入到EXCEL中。
解决方案 »
- 编译器出了点问题,没找到具体解决办法,特来这里发问
- VC2005环境中,如何在wxWidgets工程中使用rc文件里定义的资源
- 关于list control的问题
- 下面两句程序是什么意思?偶是菜鸟……
- faint,难道VC对textout的个数还有限制???
- ComboBox中的选项进行变动后MFC发送的消息是哪一个。
- 2000人人民币做个hook的活
- 请问如何解决在接受数据中跳出来处理其他事
- MFC 如何让popup窗体像child窗体一样与父窗体同显同隐
- CEditView的小问题(十万火急)
- 完全不懂vc的菜鸟,求一个文件夹选择框的制作
- 各位老大,,,,,,,,小弟有问题请教~!!!!!!!!!关于内网~
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); _Application app;
Workbooks books;
_Workbook book;
Worksheets sheets;
_Worksheet sheet;
Range range;
Font font;
Range cols;
Range resizedrange;
Interior interior;
Borders borders;
Border bottomborder; // Start Excel and get an Application object.
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("Couldn't start Excel and get Application object.");
return;
} //Get a new workbook.
books = app.GetWorkbooks();
book = books.Add (covOptional); //Get the first sheet.
sheets =book.GetSheets();
sheet = sheets.GetItem(COleVariant((short)1)); //Fill cells A1, B1, C1, and D1 one cell at a time with "headers".
range = sheet.GetRange(COleVariant("A1"),COleVariant("A1"));
range.SetValue2(COleVariant("First Name"));
range = sheet.GetRange(COleVariant("B1"),COleVariant("B1"));
range.SetValue2(COleVariant("Last Name"));
range = sheet.GetRange(COleVariant("C1"),COleVariant("C1"));
range.SetValue2(COleVariant("Full Name"));
range = sheet.GetRange(COleVariant("D1"),COleVariant("D1"));
range.SetValue2(COleVariant("Salary")); //Format A1:D1 as bold, vertical alignment = center.
range = sheet.GetRange(COleVariant("A1"), COleVariant("D1"));
font = range.GetFont();
font.SetBold(covTrue);
range.SetVerticalAlignment(
COleVariant((short)-4108)); //xlVAlignCenter = -4108 //Fill A2:B6 with an array of values (First & Last Names).
{
COleSafeArray saRet;
DWORD numElements[]={5,2}; //5x2 element array
saRet.Create(VT_BSTR, 2, numElements);
//Fill the 5x2 SafeArray with the following data:
// John Smith
// Tom Brown
// Sue Thomas
// Jane Jones
// Adam Johnson FillSafeArray(L"John", 0, 0, &saRet);
FillSafeArray(L"Smith", 0, 1, &saRet);
FillSafeArray(L"Tom", 1, 0, &saRet);
FillSafeArray(L"Brown", 1, 1, &saRet);
FillSafeArray(L"Sue", 2, 0, &saRet);
FillSafeArray(L"Thomas", 2, 1, &saRet); FillSafeArray(L"Jane", 3, 0, &saRet);
FillSafeArray(L"Jones", 3, 1, &saRet);
FillSafeArray(L"Adam", 4, 0, &saRet);
FillSafeArray(L"Johnson", 4, 1, &saRet); range = sheet.GetRange(COleVariant("A2"), COleVariant("B6"));
range.SetValue2(COleVariant(saRet));//这样设置值, 真是太方便了 saRet.Detach();//donot forget to do so
} //Fill C2:C6 with a relative formula (=A2 & " " & B2).
range = sheet.GetRange(COleVariant("C2"), COleVariant("C6"));
range.SetFormula(COleVariant("=A2 & \" \" & B2")); //Fill D2:D6 with a formula(=RAND()*100000) and apply a number
//format.
range = sheet.GetRange(COleVariant("D2"), COleVariant("D6"));
range.SetFormula(COleVariant("=RAND()*100000"));
range.SetNumberFormat(COleVariant("$0.00")); //AutoFit columns A:D.
range = sheet.GetRange(COleVariant("A1"), COleVariant("D1"));
cols = range.GetEntireColumn();
cols.AutoFit(); //Manipulate a variable number of columns for Quarterly Sales Data.
{
short NumQtrs;
CString msg; //Determine how many quarters to display data for.
for(NumQtrs=1;NumQtrs<=3;NumQtrs++)
{
msg.Format("Enter sales data for %d quarter(s)?", NumQtrs);
if(AfxMessageBox(msg,MB_YESNO)==IDYES)
{
break;
}
}
msg.Format("Displaying data for %d quarters.", NumQtrs);
AfxMessageBox(msg); //Starting at E1, fill headers for the number of columns selected.
range = sheet.GetRange(COleVariant("E1"), COleVariant("E1"));
resizedrange = range.GetResize(covOptional, COleVariant(NumQtrs));
resizedrange.SetFormula(
COleVariant("=\"Q\" & COLUMN()-4 & CHAR(10) & \"Sales\""));
//Change the Orientation and WrapText properties for the headers.
resizedrange.SetOrientation(COleVariant((short)38));
resizedrange.SetWrapText(covTrue);
//Fill the interior color of the headers.
interior = resizedrange.GetInterior();
interior.SetColorIndex(COleVariant((short)36)); //Fill the columns with a formula and apply a number format.
range = sheet.GetRange(COleVariant("E2"), COleVariant("E6"));
resizedrange = range.GetResize(covOptional, COleVariant(NumQtrs));
resizedrange.SetFormula(COleVariant("=RAND()*100"));
resizedrange.SetNumberFormat(COleVariant("$0.00")); //Apply borders to the Sales data and headers.
range = sheet.GetRange(COleVariant("E1"), COleVariant("E6"));
resizedrange= range.GetResize(covOptional, COleVariant(NumQtrs));
borders = resizedrange.GetBorders();
borders.SetWeight(COleVariant((short)2)); //xlThin = 2 //Add a Totals formula for the Quarterly sales data and apply a
//border.
range = sheet.GetRange(COleVariant("E8"), COleVariant("E8"));
resizedrange = range.GetResize(covOptional, COleVariant(NumQtrs));
resizedrange.SetFormula(COleVariant("=SUM(E2:E6)"));
borders = resizedrange.GetBorders();
{
bottomborder = borders.GetItem((long)9);
bottomborder.SetLineStyle(
COleVariant((short)-4119)); //xlDouble = -4119
bottomborder.SetWeight(
COleVariant((short)4)); //xlThick = 4
}
} //Make the application visible and give the user control of
//Excel.
app.SetVisible(TRUE);
app.SetUserControl(TRUE);
{
CDatabase database;
CString sDriver = "MICROSOFT EXCEL DRIVER(*.XLS)";
CString sExcelFile = "c:\\demo.xls";
CString sSql;
TRY
{
// 创建进行存取的字符串
sSql.Format("DRIVER = {%s}; DSN =";FIRSTROWHASNAMES = 1; READONLY = FALSE ; CREATE_DB=\"%S\;DBQ=%S", sDriver, sExcelFile , sExcelFile); // 创建数据库,即Excel表格
if(database.OpenEx(sSql, CDatabase::noOdbcDialog))
{
sSql = "CREATE TABLE demo(Name TEXT, Age NUMBER";
database.ExecuteSQL(sSql); // 插入数值
sSql = "INSERT INTO demo(Name, Age) VALUES ("张宇", 28)";
database.ExecuteSQL(sSql); sSql = "INSERT INTO demo(Name, Age) VALUES ("陈慧琳", 27)";
database.ExecuteSQL(sSql);
//... }
database.Close();
}
CATCH_ALL(e)
{
TRACE("EXCEL 驱动没有安装:%s", sDriver);
}
}