如题格式为

解决方案 »

  1.   

    ((Excel.Range)ThisSheet.Cells[3, 2]).FormulaR1C1 = "疏影横斜水清浅 暗香浮动月黄昏";
      

  2.   

    有什么问题
    就一个个的Cell的写呗
    没啥难度啊http://dotnet.aspx.cc/article/4eb79f05-b9a4-4e8a-836f-864393f40405/read.aspx
    http://tmsoft.lsxy.com/index.php?load=read&id=415
    看看这个参考一下
      

  3.   

    首先 ,添加引用Excel组建。
    其次,Excel.Application oExcel=new Excel.Application();//定義。
        Excel.Workbooks oBooks;
        Excel.Workbook oBook;
        Excel.Worksheet oSheets;
        oBooks = (Excel.Workbooks)oExcel.Workbooks;
        oBooks.Open(sTemplate,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);//打開模板。
        oBook =(Excel.Workbook)oBooks.get_Item(1);//以下操作Excel的頁首,這個大家用的比較少吧,是列印是需要的。
        oSheets =(Excel.Worksheet) oBook.Worksheets[1];
        oSheets.PageSetup.PrintTitleRows = "";
        oSheets.PageSetup.PrintTitleColumns = "";
        oSheets.PageSetup.PrintArea = "";
        oSheets.PageSetup.LeftHeader="";
        string str="\"";
        string fontstr="&"+str+"Times New Roman,粗體"+str+"&13";
        string tab="&"+str+"Times New Roman,粗體"+str+"&12";
        oSheets.PageSetup.CenterHeader=fontstr+"Unimicron HSF Test Report\n欣興電子HSF 測試報告\n";
        oSheets.PageSetup.RightHeader=tab+"Test Date : "+this.TxtDate.Value.Trim();
        oSheets.PageSetup.LeftFooter="";
        oSheets.PageSetup.CenterFooter="";
        oSheets.PageSetup.RightFooter ="";
         //以下是動態添充數據。    for (int i=0;i<ds.Tables[0].Rows.Count;i++)
        {
         if (i>0)
         {    
          Excel.Range range;
          range = (Excel.Range)oSheets.Rows[5,missing];//獲取行。
          range.Insert(Excel.XlInsertShiftDirection.xlShiftDown,missing);//在此行前插入行。
          range = (Excel.Range)oSheets.Rows[5,missing];
          range.Font.Bold=false;//字體不為粗體
          range.Font.Color="000000";//字體顏色。
          range = oSheets.get_Range("E5", "F5");//獲得第五行多列.
          range.Merge(missing);//合並蓋多列。
          range.Interior.ColorIndex=2;//填充色。
          range = oSheets.get_Range("G5", "H5");
          range.Merge(missing);
          range.Interior.ColorIndex=2;
          range = oSheets.get_Range("I5", "J5");
          range.Merge(missing);
          range.Interior.ColorIndex=2;
          range = oSheets.get_Range("K5", "L5");
          range.Merge(missing);
          range.Interior.ColorIndex=2;
          range = oSheets.get_Range("M5", "N5");
          range.Merge(missing);
          range.Interior.ColorIndex=2;
          range = oSheets.get_Range("O5", "P5");
          range.Merge(missing);
          range.Interior.ColorIndex=2;     
         }
         int n=5;
         for (int j=0;j<ds.Tables[0].Columns.Count;j++)
         {
          if(j<4) oSheets.Cells[5,j+1]=ds.Tables[0].Rows[i].ItemArray[j];
          else if(j>3 && j<10)
          {
                            oSheets.Cells[5,n]=ds.Tables[0].Rows[i].ItemArray[j]; //填數據。
           n=n+2;
          }
          else
          {
           oSheets.Cells[5,n]=ds.Tables[0].Rows[i].ItemArray[j]; 
           n=n+1;
          }       
         
         }
        }
        try
        {
         if(File.Exists(savepath))
         {
          File.Delete(savepath);
         }//Excel.XlSaveAsAccessMode.xlNoChange
         oSheets.SaveAs(savepath,missing,missing,missing,missing,missing,missing,missing,missing,missing);//存儲Excel檔案。
         return savepath;
        }
        catch (Exception ex)
        {
         ex.Message.ToString();
         return savepath;
        }
        finally
        {//釋放。
         oExcel.Quit();
         oBooks.Close();
         GC.Collect();
        }
          //以上為打開模板,以下是動態生成以及畫統計圖。Excel.Application ExcelApp=null; //定義對象。
    Excel.Workbook     ExcelWorkBook=null; //定義工作薄。
    Excel.Worksheet    ExcelWorkSheet=null;   //定義sheet。
    object miss=System.Reflection.Missing.Value;//定義MISS值。ExcelApp=new Excel.Application();
    ExcelWorkBook=(Excel.Workbook)ExcelApp.Workbooks.Add(true);
    ExcelWorkSheet=(Excel.Worksheet)ExcelWorkBook.Worksheets[1];ExcelWorkBook.Charts.Add(miss,miss,1,miss); //創建圖表.
    ExcelWorkBook.ActiveChart.ChartType =Excel.XlChartType.xlColumnStacked; //圖表類型
    ExcelWorkBook.ActiveChart.SetSourceData((Excel.Range)ExcelWorkSheet.get_Range   ("A1",""+name+""),Excel.XlRowCol.xlRows); //獲取資料來源
    ExcelWorkBook.ActiveChart.Location(Excel.XlChartLocation.xlLocationAsObject,"Sheet1"); //存放圖表位置
    ExcelWorkBook.ActiveChart.HasLegend =true;ExcelWorkSheet.Shapes._Default("圖表 1").IncrementLeft(float.Parse("-180.75"));//設置圖表位置
    ExcelWorkSheet.Shapes._Default("圖表 1").IncrementTop(float.Parse("-108.2"));//設置圖表位置
    ExcelWorkSheet.Shapes._Default("圖表 1").ScaleWidth(float.Parse("1.90"),Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoScaleFrom.msoScaleFromTopLeft);//設置圖表寬度
    ExcelWorkSheet.Shapes._Default("圖表 1").ScaleHeight(float.Parse("1.12"),Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoScaleFrom.msoScaleFromTopLeft);//設置圖表高度((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).Select();//副坐標用%顯示
    ((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).TickLabels.NumberFormatLocal="0.0%";
    ((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).MaximumScale=1;
    ((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary)).TickLabels.NumberFormatLocal="0.0%";
    ExcelWorkBook.ActiveChart.ChartArea.Select();//添加標題
    ExcelWorkBook.ActiveChart.HasTitle=true;
    ExcelWorkBook.ActiveChart.ChartTitle.Text="FC-BGA2231037(3+2+3) Bump Yield";
    ((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary)).HasTitle=true;
    ((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlPrimary)).AxisTitle.Text="單項不良率(ppm)";
    ((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).HasTitle=true;
    ((Excel.Axis)ExcelWorkBook.ActiveChart.Axes(Excel.XlAxisType.xlValue,Excel.XlAxisGroup.xlSecondary)).AxisTitle.Text="Bump 良率(%)";.............還有很多可以自己揣摩。osheet.get_Range(range2,(Excel.Range)osheet.Cells[3,i]).Merge(true);合並單元格的另一方法,但切記要是縱向合並時Merge(true);中的參數要改為miss否則無法合並。//----------------------關閉ExcelProcess--------------------
       private void RealeseObj()
       {
        ExcelWorkBook.Close(false,null,null);
        ExcelApp.Quit();
        if(ExcelApp!=null)
        {
         System.Runtime.InteropServices.Marshal.ReleaseComObject (ExcelApp);}
        if(ExcelWorkBook!=null)
        { System.Runtime.InteropServices.Marshal.ReleaseComObject (ExcelWorkBook);}
        if(ExcelWorkSheet!=null)
        { System.Runtime.InteropServices.Marshal.ReleaseComObject (ExcelWorkSheet);}
        ExcelWorkSheet= null;
        ExcelWorkBook= null;
        ExcelApp = null;
        GC.Collect();   
       
       }
      

  4.   

    给你个简单的例子:(要添加对Excel的引用 using Excel=Microsoft.Office.Interop.Excel;) 
    Excel.Application appExcel;           appExcel = new Microsoft.Office.Interop.Excel.Application();//打开Excel Appliction
               Excel.Workbook workbookData;
               Excel.Worksheet worksheetData;           workbookData = appExcel.Workbooks.Open(System.Windows.Forms.Application.StartupPath + @"\Pattern.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,                               Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);//打开指定路径的Excel           #region Cover
               worksheetData = (Excel.Worksheet)workbookData.Sheets[1];//获取打开的Excel的第一个Sheet           worksheetData.Cells[10, 4] = DateTime.Now.ToString("yyyy/MM/dd");//向Sheet的第10行第4列写东西
     workbookData.SaveAs(strFileName,Missing.Value,Missing.Value,Missing.Value,
                   Missing.Value,Missing.Value,Excel.XlSaveAsAccessMode.xlNoChange,
                   Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);//另存Excel
               appExcel.Quit();//关闭Excel Appliction
      

  5.   

    有什么方法能反过来获取range的坐标呢?
    比如,private void Application_SheetChange(object sender, Excel.Range Target)
            {
                //在这里,我想知道这个Target的行坐标top,button和列坐标left和right
            }
    谢谢高手回答