
我现在还是一学生,如有高见请指教!

需要引入的命名空间:
using System.Reflection;
using Microsoft.Office.Interop.Excel;(需要添加com组件Microsoft Excel 11.0 Object Library,安装了Excel才有哦!添加后发现引用里面多了 excel,microsoft.offic.core.office,VBIDE)
顺便介绍一个小的技巧,如果在建一个类的实例时,如果是用名称空间定位的如果发现名字太长,是可以给它定义一个别名的,如:using Excel = Microsoft.Office.Interop.Excel;
那么Excel就是Microsoft.Office.Interop.Excel的别名了!

#region Excel变量(下面加了注释的是为了方便理解在下面也定义了的!
 )
)// Excel object references.
// private Excel.Application m_objExcel = null;
//private Excel.Workbooks m_objBooks = null;
//private Excel._Workbook m_objBook = null;
// private Excel.Sheets m_objSheets = null;
// private Excel._Worksheet m_objSheet = null;
private Excel.Range m_objRange = null;
private object m_objOpt = Missing.Value;
private object m_strSampleFolder;
#endregion
//打开一个Excel应用
private Excel.Application m_objExcel = new Excel.Application();
//打开一个现有的工作簿
private Excel.Workbooks m_objBooks =m_objExcel.Workbooks;
private Excel._Workbook m_objBook = null;
m_objBook = m_objBooks.Open(strPath + @"\excel\表1-9 标准宗地地价评估技术要点表.xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt,m_objOpt,m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
//打开sheet页
private Excel.Sheets m_objSheets = null;
m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
//选择第一个sheet页
private Excel._Worksheet m_objSheet = null;
m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
//下面就可以开始赋值了
最简单的
m_objRange = m_objSheet.get_Range("B" + (5 + i), m_objOpt);//定位所要填写的位置
m_objRange.set_Value(m_objOpt, Array[0]);//赋值了(在这个里面arry是一个类型为object的数组,定义里面也是object的哦,不过既然任何东西都是继承自object那么像数字,字符串之类的当然也可以用了!)
发现没m_objSheet.get_Range("B" + (5 + i), m_objOpt),是get_Range诶,也就是说他是一个范围了如果是get_Range("B5","U5")那就是填充从B5到U5了,可以用一维数组填充,如果是B5到U8呢??就用二维数组填充撒!!那个"B" + (5 + i)是小弟为了方便用一维数组循环时,从方便出发定义的了,结果就是类似什么B5之类的了,哦,我多语了,写程序的谁不知道这点啊,
 !
!需要提醒的是如果你的表中有合并项,比如B5,C5,D5是一个格的话,就不能通过数组来偷懒了,要逐个指定,(我没找出该方法,如果你发现了,告诉我啊!)
最后就做一下收尾工作了:
m_objBook.SaveAs(m_strSampleFolder, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, Excel.XlSaveAsAccessMode.xlNoChange, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
m_objBook.Close(false, m_objOpt, m_objOpt);
m_objExcel.Quit();
解释一下:m_strSampleFolder是要保存为的名字
算了也一并写下吧:
                   SaveFileDialog saveDlg = new SaveFileDialog();
                    saveDlg.FileName = @"表1-9 标准宗地地价评估技术要点表.xls";
                    saveDlg.Filter = "Excel files (*.xls)|*.xls";
                    if (saveDlg.ShowDialog() == DialogResult.OK)
                    {
                        m_strSampleFolder = saveDlg.FileName;
                        // Start a new workbook in Excel.
                        m_objExcel = new Excel.Application();
                        m_objBooks = m_objExcel.Workbooks;
                        m_objBook = m_objBooks.Open(strPath + @"\excel\表1-9 标准宗地地价评估技术要点表.xls", m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt, m_objOpt);
                        m_objSheets = (Excel.Sheets)m_objBook.Worksheets;
                        m_objSheet = (Excel._Worksheet)(m_objSheets.get_Item(1));
                        object[] Array = new object[7];//从名称到比准价格7个
}
 
                    
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号