_Application app; //程序对象
Workbooks books; //工作簿集合
_Workbook book; //工作簿
Worksheets sheets; //工作表集合
_Worksheet sheet; //工作表
Range range; //单元格范围
Font font; //字体
Range cols;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); if( !app.CreateDispatch("Excel.Application") )
{
this->MessageBox("无法创建Excel应用!");
return;
} books=app.GetWorkbooks();
book=books.Add(covOptional); //新建工作簿
sheets=book.GetSheets();
sheet=sheets.GetItem(COleVariant((short)1)); range=sheet.GetRange(COleVariant("a1"),COleVariant("a1")); //字段名设置
range.SetValue2(COleVariant("店铺号"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12)); //设置Excel列宽
range=sheet.GetRange(COleVariant("b1"),COleVariant("b1"));
range.SetValue2(COleVariant("商品号"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12));
range=sheet.GetRange(COleVariant("c1"),COleVariant("c1"));
range.SetValue2(COleVariant("销售数量"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12));
range=sheet.GetRange(COleVariant("d1"),COleVariant("d1"));
range.SetValue2(COleVariant("销售金额"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12));
range=sheet.GetRange(COleVariant("e1"),COleVariant("e1"));
range.SetValue2(COleVariant("扣率"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12));
range=sheet.GetRange(COleVariant("f1"),COleVariant("f1"));
range.SetValue2(COleVariant("毛利"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12));
//根据实际,仿照以上添加字段 range=sheet.GetRange(COleVariant("a1"),COleVariant("a1")); //Range复位(不能缺少)
long ss;
CString cc;CColumns cls;
cls=m_data.GetColumns();
ss=cls.GetCount();
for(int i=0;i<number1;i++) //行数number1在初始化中利用智能指针m_pRecordset获取
{
m_data.SetRow(i);
for(int j=0;j<ss;j++) //ss列数
{
m_data.SetCol(j);
cc=m_data.GetText();
range.SetItem(_variant_t((long)(i+2)),_variant_t((long)(j+1)),_variant_t(cc));
}
}
app.SetVisible(TRUE); //设置Excel表可见
app.SetUserControl(TRUE); //设置Excel表可被操作
一开始是一行一行的导出 但到了后面 datagrid里 每回都加一 短非常多的数据。? 代码的问题吧 牛人来看看吧。 谢谢了
Workbooks books; //工作簿集合
_Workbook book; //工作簿
Worksheets sheets; //工作表集合
_Worksheet sheet; //工作表
Range range; //单元格范围
Font font; //字体
Range cols;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); if( !app.CreateDispatch("Excel.Application") )
{
this->MessageBox("无法创建Excel应用!");
return;
} books=app.GetWorkbooks();
book=books.Add(covOptional); //新建工作簿
sheets=book.GetSheets();
sheet=sheets.GetItem(COleVariant((short)1)); range=sheet.GetRange(COleVariant("a1"),COleVariant("a1")); //字段名设置
range.SetValue2(COleVariant("店铺号"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12)); //设置Excel列宽
range=sheet.GetRange(COleVariant("b1"),COleVariant("b1"));
range.SetValue2(COleVariant("商品号"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12));
range=sheet.GetRange(COleVariant("c1"),COleVariant("c1"));
range.SetValue2(COleVariant("销售数量"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12));
range=sheet.GetRange(COleVariant("d1"),COleVariant("d1"));
range.SetValue2(COleVariant("销售金额"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12));
range=sheet.GetRange(COleVariant("e1"),COleVariant("e1"));
range.SetValue2(COleVariant("扣率"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12));
range=sheet.GetRange(COleVariant("f1"),COleVariant("f1"));
range.SetValue2(COleVariant("毛利"));
cols=range.GetEntireColumn();
cols.SetColumnWidth(_variant_t((long)12));
//根据实际,仿照以上添加字段 range=sheet.GetRange(COleVariant("a1"),COleVariant("a1")); //Range复位(不能缺少)
long ss;
CString cc;CColumns cls;
cls=m_data.GetColumns();
ss=cls.GetCount();
for(int i=0;i<number1;i++) //行数number1在初始化中利用智能指针m_pRecordset获取
{
m_data.SetRow(i);
for(int j=0;j<ss;j++) //ss列数
{
m_data.SetCol(j);
cc=m_data.GetText();
range.SetItem(_variant_t((long)(i+2)),_variant_t((long)(j+1)),_variant_t(cc));
}
}
app.SetVisible(TRUE); //设置Excel表可见
app.SetUserControl(TRUE); //设置Excel表可被操作
一开始是一行一行的导出 但到了后面 datagrid里 每回都加一 短非常多的数据。? 代码的问题吧 牛人来看看吧。 谢谢了
http://download.csdn.net/tag/clistctrl%E5%AF%BC%E5%85%A5EXCEL