您的位置:首页 > 编程语言 > C#

C#读取和写入Excel2003的代码

2008-03-25 19:38 267 查看
单击“添加引用”对话框的“COM”选项卡,找到“Microsoft Excel 11 Object Library”,按“确定”。
注意:Microsoft Excel 11 Object Library中Excel 11 的版本与安装的OFFICE版本有关。
在编程之前还需要引入命名空间using Microsoft.Office.Interop.Excel;
注意:有的机器上需要用using Excel;我猜这也跟OFFICE版本有关(并未确定)
这样C#就可以正确识别Excel对象了。

 


//下面示例为:从一个Excel文档中读取数据,然后将数据附加到另外一个Excel文档中去(关键代码)


Application excelApp = new ApplicationClass();


Excel.Workbook workbook = null;


Excel.Worksheet worksheet = null;


Excel.Range range = null;


   private List<Teacher> LoadAccpBenetExcel(string sourceFileName)




        ...{


            List<Teacher> teachers = new List<Teacher>();


            try




            ...{


                workbook = excelApp.Workbooks.Open(sourceFileName


                    , 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);


            }


            catch (Exception e)




            ...{


                MessageBox.Show(e.Message, "打开Excel工作簿失败");


            }


            worksheet = (Excel.Worksheet)workbook.Sheets[1];


            //从第6行开始是要读取的数据,所以从第6行开始取数据,一直读取到空行为止


            for (int i = 6; true; i++)




            ...{


                range = (Excel.Range)worksheet.Cells[i, 2];


                if (range.Value2 == null)




                ...{


                    break;


                }


                try




                ...{


                    Teacher model = new Teacher();


                    model.college = GetExcelRangeValue(worksheet, 3, 3);


                    model.teacherName = GetExcelRangeValue(worksheet, i, 2);


                    teachers.Add(model);


                }


                catch (Exception ex)




                ...{


                    MessageBox.Show(ex.Message, "从源Excel中获取数据失败"+i);


                    break;


                }


            }


            excelApp.Quit();


            return teachers;


        }




       private string GetExcelRangeValue(Excel.Worksheet worksheet, int RowIndex, int ColumnIndex)




        ...{


            Excel.Range range = (Excel.Range)worksheet.Cells[RowIndex, ColumnIndex];


            if (range.Value2 == null)




            ...{


                return "";


            }


            else




            ...{


                return range.Text.ToString();


            }


        }




        private void CreateAccpBenetExcel(List<Teacher> teachers, string sourceFileName)




        ...{


            try




            ...{


                workbook = excelApp.Workbooks.Open(sourceFileName


                    , 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);


            }


            catch (Exception e)




            ...{


                MessageBox.Show(e.Message, "打开Excel工作簿失败");


            }


            worksheet = (Excel.Worksheet)workbook.Sheets[1];


            //下面获取从第几行开始附加数据,避免覆盖已有的数据


            int BlankRowNumber;


            for(int i=7;true;i++)




            ...{


                range = (Excel.Range)worksheet.Cells[i, 3];


                if(range.Value2==null)




                ...{


                    BlankRowNumber=i;


                    break;


                }


            }


            foreach(Teacher teacher in teachers)




            ...{


                try




                ...{


                    range = (Excel.Range)worksheet.Cells[BlankRowNumber, 2];


                    range.Value2 = teacher.college;


                    range = (Excel.Range)worksheet.Cells[BlankRowNumber, 3];


                    range.Value2 = teacher.teacherName;


                    ++BlankRowNumber;


                }


                catch (Exception ex)




                ...{


                    MessageBox.Show(ex.Message, "从源Excel中获取数据失败" + --BlankRowNumber);


                }


            }


            workbook.Save();


            excelApp.Quit();


            GC.Collect();


        }



 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息