1.作业环境
开发环境:vs2005 /vs2008 数据库:sql2005
excel:2003
首先
在vs加入com組件(当然也可以加入.net下的excel组件):

之后vs引用子目录会多出下面三个dll:

简单操作流程如下: 复制代码 代码如下: using Excel;
// from bill example public void writeExcelAdvance(String outputFile) { string[,] myData = { { "车牌号", "类型", "品 牌", "型 号", "颜 色", "附加费证号", "车架号" }, { "浙KA3676", "危险品", "货车", "铁风SZG9220YY", "白", "1110708900", "022836" }, { "浙KA4109", "危险品", "货车", "解放CA4110P1K2", "白", "223132", "010898" }, { "浙KA0001A", "危险品", "货车", "南明LSY9190WS", "白", "1110205458", "0474636" }, { "浙KA0493", "上普货", "货车", "解放LSY9190WS", "白", "1110255971", "0094327" }, { "浙KA1045", "普货", "货车", "解放LSY9171WCD", "蓝", "1110391226", "0516003" }, { "浙KA1313", "普货", "货车", "解放9190WCD", "蓝", "1110315027", "0538701" }, { "浙KA1322", "普货", "货车", "解放LSY9190WS", "蓝", "24323332", "0538716" }, { "浙KA1575", "普货", "货车", "解放LSY9181WCD", "蓝", "1110314149", "0113018" }, { "浙KA1925", "普货", "货车", "解放LSY9220WCD", "蓝", "1110390626", "00268729" }, { "浙KA2258", "普货", "货车", "解放LSY9220WSP", "蓝", "111048152", "00320" } }; //引用Excel Application类别 Application myExcel = null; //引用活页簿类别 Workbook myBook = null; //引用工作表类别 Worksheet mySheet = null; //引用Range类别 Range myRange = null; //开启一个新的应用程式 myExcel = new Microsoft.Office.Interop.Excel.Application(); //打开一个已经存在的excel excel2003和2007版打开参数不一样,具体可以上网上去查: //excelSql.Workbooks.Open(@"C:\08.xls"(已经存在的excel路径), Type.Missing, Type.Missing, Type.Missing, Type.Missing, //Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing,Type.Missing); //加入新的活页簿 myExcel.Workbooks.Add(true); //停用警告讯息 myExcel.DisplayAlerts = false; //让Excel文件可见 myExcel.Visible = true; //引用第一个活页簿 myBook = myExcel.Workbooks[1]; //设定活页簿焦点 myBook.Activate(); //引用第一个工作表 mySheet = (Worksheet)myBook.Worksheets[1]; //命名工作表的名称为 "Array" mySheet.Name = "Cells"; //设工作表焦点 mySheet.Activate(); int a = 0; int UpBound1 = myData.GetUpperBound(0); //二维阵列数上限 int UpBound2 = myData.GetUpperBound(1); //二维阵列数上限 //写入报表名称 myExcel.Cells[1, 4] = "普通报表"; //以下的Select方法可省略,加速Excel运行,但VBA有些功能必须要用到Select方法。 //以下的Select方法可省略,加速Excel运行,但VBA有些功能必须要用到Select方法。 //逐行写入数据 for (int i = 0; i < UpBound1; i++) { for (int j = 0; j < UpBound2; j++) { //以单引号开头,表示该单元格为纯文字 a++; //用offset写入阵列资料 myRange = mySheet.get_Range("A2", Type.Missing); myRange.get_Offset(i, j).Select(); myRange.Value2 = "'" + myData[i, j]; //用Cells写入阵列资料 myRange.get_Range(myExcel.Cells[2 + i, 1 + j], myExcel.Cells[2 + i, 1 + j]).Select(); myExcel.Cells[2 + i, 1 + j] = "'" + myData[i, j]; } } //加入新的工作表在第1张工作表之后 myBook.Sheets.Add(Type.Missing, myBook.Worksheets[1], 1, Type.Missing); //引用第2个工作表 mySheet = (Worksheet)myBook.Worksheets[2]; //命名工作表的名称为 "Array" mySheet.Name = "Array"; //Console.WriteLine(mySheet.Name); //写入报表名称 myExcel.Cells[1, 4] = "普通报表"; //设定范围 myRange = (Range)mySheet.get_Range(myExcel.Cells[2, 1], myExcel.Cells[UpBound1 + 1, UpBound2 + 1]); myRange.Select(); //用阵列一次写入资料 myRange.Value2 = "'" + myData; //设定储存路径 //string PathFile = Directory.GetCurrentDirectory() + @"\button4.xls"; //另存活页簿 myBook.SaveAs(outputFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing , XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //关闭活页簿 myBook.Close(false, Type.Missing, Type.Missing); //关闭Excel myExcel.Quit(); //释放Excel资源 System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel); myBook = null; mySheet = null; myRange = null; myExcel = null; GC.Collect();
|