A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 鬼鬼 中级黑马   /  2014-3-18 13:21  /  1304 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 鬼鬼 于 2014-3-23 22:18 编辑

很早以前就遇到的一个问题,请问.NET中如何生成Word和Excel文件?是需要调用API?需要使用COM组件?还是需要引入第三方库?
如果我编写的不是WinForm而是WPF程序,有没有什么新的方法?
求大神解答!

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

3 个回复

倒序浏览
生成EXCEL可以使用系统的COM组件,也可以使用第三方控件如NPOI,但是生成WORD我就不知道了,没写过生成WORD的代码...
回复 使用道具 举报
///******************导出EXCEL表格的函数**********************************************
outputXLS(TStringGrid *sgdresult,AnsiString filename)
{
      //TODO: Add your source code here
     Variant Ex,wb,sheet,ERange,EBorders;
     AnsiString strdir;
     register int n;
     n = 0;
     Ex = CreateOleObject("Excel.Application");
     //Ex.OlePropertySet("Visible",false);
     Ex.OlePropertySet("Visible",true);
     //创建一个新的excel工作本(文件)
     wb= Ex.OlePropertyGet("Workbooks");
     wb.Exec(Procedure("Add"));
     wb=Axl.OlePropertyGet("ActiveWorkbook");
     sheet=Workbook.OlePropertyGet("ActiveSheet");

    AnsiString strRowTemp;
     AnsiString strRange,strtemp;

    strRange = "A"+IntToStr(1)+":R"+IntToStr(1);//获取操作范围
     ERange = sheet.OlePropertyGet("Range",strRange.c_str());
     EBorders = ERange.OlePropertyGet("Borders");//获取边框对象
     EBorders.OlePropertySet("linestyle",xlNone);

    //AnsiString strData = "报表标题";//报表标题
     //sheet.OlePropertyGet("Cells",1,1).OlePropertySet("Value",strData.c_str());
     int i = 1;
     for (n;n < sgd_temp->RowCount; n++)
     {
         for (int j = 1;j <= sgd_temp->ColCount; j++)
         {
             strtemp = sgd_temp->Cells[j-1][n];
             sheet.OlePropertyGet("Cells",i,j).OlePropertySet("Value",strtemp.c_str());
         }
         strRange = "A"+IntToStr(i)+":R"+IntToStr(i);
         ERange = sheet.OlePropertyGet("Range",strRange.c_str());
         EBorders = ERange.OlePropertyGet("Borders");
         EBorders.OlePropertySet("linestyle",xlContinuous);
         EBorders.OlePropertySet("weight",xlThin);
         EBorders.OlePropertySet("colorindex",xlAutomatic);
         i++;
     }
     wb.OleProcedure("SaveAs",savfilename.c_str()); //保存表格
     wb.OleProcedure("Close");//关闭表格
     Ex.OleFunction("Quit");//退出Excel
     Application->MessageBox("导出完毕!!!","提示",MB_ICONINFORMATION|MB_OK);
}

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
mdb 发表于 2014-3-18 13:30
生成EXCEL可以使用系统的COM组件,也可以使用第三方控件如NPOI,但是生成WORD我就不知道了,没写过生成WORD ...

刚才看了下,应该也可以通过COM组件实现……
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马