_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 300多行数据
导出的时候就55行.
刚开始的时候第一列的重复数据可以导出 到后面相同数据就不能导出了 这问题该如何解决呢?
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 300多行数据
导出的时候就55行.
刚开始的时候第一列的重复数据可以导出 到后面相同数据就不能导出了 这问题该如何解决呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货