一段时间以来,我从网上搜了许多文章,是关于C#操作EXCEL的,但我都试了一遍,竞没有一个能让EXCEL程序显示出来,是ASP.NET没这功能?还是中国人都不会?还是有人会但保守? 在CSDN上我发了几个贴子也没有人能解决。我从网上找了许多操作EXCEL的例子,照着做都不能成功,下面是其中一个例子,
加入COM组件,也写了using Excel后Excel.Application app = new Excel.ApplicationClass();
Excel.Workbooks wbs = app.Workbooks;
Excel.Workbook wb = wbs.Add(System.Reflection.Missing.Value);
Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];
app.Cells[2,2] = "abcd" ;  
app.Visible = true;   //执行此句后EXCEL程序没有显示出来
ws.PrintPreview(0) ;  //此句执行不了,网页的进度条走了一点就不往前走了单步执行到最后一条语句时ws.PrintPreview(0) ; 就不行了,网页的进度条中止,看
内存中有一个EXCEL进程,但EXCEL出不来。---------------------------------------------------------------------------
下面是VB6时代操作EXCEL,往模板a.xls中写数据,启动预览,然后不保存关闭退出的例子Dim myExcel As Excel.Application
Dim x1book As Excel.Workbook
Dim x1sheet As Excel.Worksheet
Set myExcel = CreateObject("Excel.Application")
Set x1book = myExcel.Workbooks.Open(App.Path + "\a.xls")
Set x1sheet = x1book.Worksheets(1)x1sheet.Cells(1,1) = "abcdefghijk"'启动预览,用户点关闭后不提示保存直接退出。
myExcel.Visible = True
myExcel.Worksheets.PrintPreview
myExcel.AlertBeforeOverwriting = False
myExcel.DisplayAlerts = False
Set x1book = Nothing
myExcel.Application.Quit
'****************************
如今学ASP.NET,怎么用C#实现同样功能?

解决方案 »

  1.   

    试试这样(这是一个朋友在网上推荐的,我还没试过,仅供参考)  Excel.Application app = new Excel.ApplicationClass();
      if( app == null)
      {
      MessageBox.Show("Excel无法启动");
      return;
      }
      app.Visible = true;
      Excel.Workbooks wbs = app.Workbooks;
      Excel.Workbook wb = wbs.Add(Missing.Value);
      Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];
      Excel.Range r = ws.get_Range("A1","H1");
      object [] objHeader = {"标题1","标题2","标题3",
      "标题4","标题5","标题6",
      "标题7","标题8"};
      r.Value = objHeader;
      if (lv.Items.Count >0)
      {
      r = ws.get_Range("A2",Missing.Value);  
      object [,] objData = new Object[this.lv.Items.Count,8];
      foreach(ListViewItem lvi in lv.Items)
      {
      objData[lvi.Index,0] = lvi.Text;
      objData[lvi.Index,1] = lvi.SubItems[1].Text;
      objData[lvi.Index,2] = lvi.SubItems[2].Text;
      objData[lvi.Index,3] = lvi.SubItems[3].Text;
      objData[lvi.Index,4] = lvi.SubItems[4].Text;
      objData[lvi.Index,5] = lvi.SubItems[5].Text;
      objData[lvi.Index,6] = lvi.SubItems[6].Text;
      objData[lvi.Index,7] = lvi.SubItems[7].Text;
      }
      r = r.get_Resize(lv.Items.Count,8);
      r.Value = objData;
      r.EntireColumn.AutoFit(); 
      }
      app = null;
      

  2.   

    我到孟子E章里看了几篇文章,也试了一下,可以打开EXCEL呀!是不是和你想要的不一样呀
      

  3.   

    同意 Erase,这也算是问问题的方法?TMD,去死吧~~
      

  4.   

    同意:Erase(Hello 2005 !) 
    To:zhanggy1973 (谷雨)
    你这是“有组织,没纪律”
      

  5.   

    看看老孟写的吧:
    http://dotnet.aspx.cc/ShowDetail.aspx?id=8A4CBF47-B888-4832-3389-ED3A3A3C8AAB
    国人强的有的是,呵呵。
    自己也要争气啊,什么都指望别人强有什么用:)
      

  6.   

    定义一个application/ms-excel的回写流,用Response.Write送回,至于与一个民族关联起来吗?
      

  7.   

    Asp.net??楼主不是想靠那段代码把Excel显示在客户端的网页中吧?如果这段代码在Server端运行,打印预览也只能显示在Server上,不能显示在客户端网页上。如果是这样,不但中国人做不到,恐怕地球人也做不到。
      

  8.   

    哥们,你是中国人,你不行,并不代表中国人都不行啊!只是你不注意学习罢了,msdn最近就讲过如何在程序中调用excel、outlook等等