黑马程序员技术交流社区

标题: .NET中如何生成Word和Excel文件? [打印本页]

作者: 鬼鬼    时间: 2014-3-18 13:21
标题: .NET中如何生成Word和Excel文件?
本帖最后由 鬼鬼 于 2014-3-23 22:18 编辑

很早以前就遇到的一个问题,请问.NET中如何生成Word和Excel文件?是需要调用API?需要使用COM组件?还是需要引入第三方库?
如果我编写的不是WinForm而是WPF程序,有没有什么新的方法?
求大神解答!
作者: mdb    时间: 2014-3-18 13:30
生成EXCEL可以使用系统的COM组件,也可以使用第三方控件如NPOI,但是生成WORD我就不知道了,没写过生成WORD的代码...
作者: shangxin    时间: 2014-3-18 14:19
///******************导出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);
}
作者: 鬼鬼    时间: 2014-3-23 22:17
mdb 发表于 2014-3-18 13:30
生成EXCEL可以使用系统的COM组件,也可以使用第三方控件如NPOI,但是生成WORD我就不知道了,没写过生成WORD ...

刚才看了下,应该也可以通过COM组件实现……




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2