asp.net(C#),比入我有个execl文件,名为:aaaa.xls(已经设计好格式),放在某个具体目录下的,我要把从asp.net中产生数据传到aaaa.xls文件中,在传的时候我要能控制响应的数据传到aaaa.xls中响应的单元中,如:cell(1,2)="aaa",cell(4,6)="sdsd"等等,请给代码,急急急急急急急急急急急急急急急急

解决方案 »

  1.   

    protected void ExportExcel()
       {
        gridbind(); 
        if(ds1==null) return;     string saveFileName="";
    //    bool fileSaved=false;
        SaveFileDialog saveDialog=new SaveFileDialog();
        saveDialog.DefaultExt ="xls";
        saveDialog.Filter="Excel文件|*.xls";
        saveDialog.FileName ="Sheet1";
        saveDialog.ShowDialog();
        saveFileName=saveDialog.FileName;
        if(saveFileName.IndexOf(":")<0) return; //被点了取消
    //    excelapp.Workbooks.Open   (App.path & 工程进度表.xls) 
       
        Excel.Application xlApp=new Excel.Application();
        object missing=System.Reflection.Missing.Value; 
        if(xlApp==null)
        {
         MessageBox.Show("无法创建Excel对象,可能您的机子未安装Excel");
         return;
        }
        Excel.Workbooks workbooks=xlApp.Workbooks;
        Excel.Workbook workbook=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
        Excel.Worksheet worksheet=(Excel.Worksheet)workbook.Worksheets[1];//取得sheet1
        Excel.Range range;
            string oldCaption=Title_label .Text.Trim ();
        long totalCount=ds1.Tables[0].Rows.Count;
        long rowRead=0;
        float percent=0;     worksheet.Cells[1,1]=Title_label .Text.Trim ();
        //写入字段
        for(int i=0;i<ds1.Tables[0].Columns.Count;i++)
        {
         worksheet.Cells[2,i+1]=ds1.Tables[0].Columns.ColumnName; 
         range=(Excel.Range)worksheet.Cells[2,i+1];
         range.Interior.ColorIndex = 15;
         range.Font.Bold = true;    }
        //写入数值
        Caption .Visible = true;
        for(int r=0;r<ds1.Tables[0].Rows.Count;r++)
        {
         for(int i=0;i<ds1.Tables[0].Columns.Count;i++)
         {
          worksheet.Cells[r+3,i+1]=ds1.Tables[0].Rows[r];     
         }
         rowRead++;
         percent=((float)(100*rowRead))/totalCount;    
         this.Caption.Text= "正在导出数据["+ percent.ToString("0.00") +"%]";
         Application.DoEvents();
        }
        worksheet.SaveAs(saveFileName,missing,missing,missing,missing,missing,missing,missing,missing);
       
        this.Caption.Visible= false;
        this.Caption.Text= oldCaption;     range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[ds1.Tables[0].Rows.Count+2,ds1.Tables[0].Columns.Count]);
        range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null);
       
        range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
        range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =Excel.XlLineStyle.xlContinuous;
        range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight =Excel.XlBorderWeight.xlThin;     if(ds1.Tables[0].Columns.Count>1)
        {
         range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex=Excel.XlColorIndex.xlColorIndexAutomatic;
         }
        workbook.Close(missing,missing,missing);
        xlApp.Quit();
       }
      

  2.   

    注意要开通Excel组件服务,引用Excel的COM对象。
      

  3.   

    我的是C/S结构的   /// <summary>
            /// 将DataGrid中的数据导入Excel中,并显示Excel应用程序,
            /// 注意调用该方法必须有安装Excel 2000应用程序,并且假定DataGrid中绑定的是一DataSet
            /// </summary>
            /// <param name="grid"></param>
            /// <param name="ReportTitle"></param>
            public static void ExportDataGridToExcel(DataGrid grid,string ReportTitle)
            {
                DataTable myTable = ((DataSet)grid.DataSource).Tables[0];            try
                {
                    Excel.Application xlApp = new Excel.ApplicationClass();                int rowIndex;
                    int colIndex;                rowIndex = 2;
                    colIndex = 0;                Excel.Workbook xlBook =xlApp.Workbooks.Add(true);                               if (grid.TableStyles.Count >0 ) 
                    {
                        Excel.Range range = xlApp.get_Range(xlApp.Cells[1,1],xlApp.Cells[1,grid.TableStyles[0].GridColumnStyles.Count]);
                        range.MergeCells = true;
                        xlApp.ActiveCell.FormulaR1C1  = ReportTitle;
                        xlApp.ActiveCell.Font.Size  = 18;
                        xlApp.ActiveCell.Font.Bold = true;                     foreach(DataGridColumnStyle colu in grid.TableStyles[0].GridColumnStyles)
                        {
                            colIndex=colIndex +1;
                            xlApp.Cells[2,colIndex] = colu.HeaderText ;
                        }                    //得到的表所有行,赋值给单元格
                        for (int row = 0;row < myTable.Rows.Count;row++)
                        {
                            rowIndex = rowIndex + 1;
                            colIndex = 0;
                            for (int col=0;col<grid.TableStyles[0].GridColumnStyles.Count;col++)
                            {
                                colIndex = colIndex + 1;
                                xlApp.Cells[rowIndex, colIndex] = grid[row,col].ToString();
                            }                    
                        }
                    }
                    else
                    { 
                        Excel.Range range = xlApp.get_Range(xlApp.Cells[1,1],xlApp.Cells[1,myTable.Columns.Count]);
                        range.MergeCells = true;
                        xlApp.ActiveCell.FormulaR1C1  = ReportTitle;
                        xlApp.ActiveCell.Font.Size  = 18;
                        xlApp.ActiveCell.Font.Bold = true;
                        
                        //将表中的栏位名称填到Excel的第一行
                        foreach(DataColumn Col in myTable.Columns)
                        {
                            colIndex = colIndex + 1;
                            xlApp.Cells[2, colIndex] = Col.ColumnName;                
                        }                    //得到的表所有行,赋值给单元格
                        for (int row = 0;row < myTable.Rows.Count;row++)
                        {
                            rowIndex = rowIndex + 1;
                            colIndex = 0;
                            for (int col=0;col<myTable.Columns.Count;col++)
                            {
                                colIndex = colIndex + 1;
                                xlApp.Cells[rowIndex, colIndex] = grid[row,col].ToString();
                            }                    
                        }
                    } 
                
                    xlApp.get_Range(xlApp.Cells[2, 1], xlApp.Cells[2, colIndex]).Font.Bold = true;
                    xlApp.get_Range(xlApp.Cells[2, 1], xlApp.Cells[rowIndex, colIndex]).Borders.LineStyle = 1;                          xlApp.Cells.EntireColumn.AutoFit();
                    xlApp.Cells.VerticalAlignment = Excel.Constants.xlCenter ;
                    xlApp.Cells.HorizontalAlignment = Excel.Constants.xlCenter ;                        xlApp.Visible = true;            
                }
                catch(Exception e)
                {
                    throw e;
                }
                
            }
      

  4.   

    silentwins,给你代码中SaveFileDialog saveDialog=new SaveFileDialog();这一步无法执行,是不是缺什么引用呢,