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();
}
注意: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();
}
相关文章推荐
- C#读取和写入Excel2003的代码
- C# Excel 创建、打开、读取、写入、保存的一般性代码
- C#中创建、打开、读取、写入、保存Excel的一般性代码
- C#通过XML节点属性/属性值读取写入XML操作代码实例
- C#中创建、打开、读取、写入、保存Excel的一般性代码
- C#中创建、打开、读取、写入、保存Excel的一般性代码[转]
- C#中创建、打开、读取、写入、保存Excel的一般性代码
- [转]C# Excel 创建、打开、读取、写入、保存的一般性代码
- C#中创建、打开、读取、写入、保存Excel的一般性代码
- c#中创建、打开、读取、写入、保存Excel的一般性代码
- C# 创建文本文件写入读取实现代码
- C#中创建、打开、读取、写入、保存Excel的一般性代码
- C#中创建、打开、读取、写入、保存Excel的一般性代码
- C#中创建、打开、读取、写入、保存Excel的一般性代码
- C#中创建、打开、读取、写入、保存Excel的一般性代码
- C# Excel 创建、打开、读取、写入、保存的一般性代码
- C# Excel 创建、打开、读取、写入、保存的一般性代码
- C#中创建、打开、读取、写入、保存Excel的一般性代码
- C#中创建、打开、读取、写入、保存Excel的一般性代码