导出Excel文件
2009年4月29日21:59:30
private void btnOutputExcel_Click(object sender, EventArgs e)
{
//一个Excel的应用类的实例声明
ApplicationClass myExcel;
//工作薄声明
Workbooks myWorkBooks;
//一个工作薄
Workbook myWorkBook;
//一个工作表
Worksheet myWorkSheet;
char myColumns;
//用WorkSheet对象返回一个Range对象,该对象代表:能在受保护的工作表中进行编辑的区域的子集
Range myRange;
Object[,] myData = new Object[5000, 30];
System.Data.DataTable myReader;
int count, i, j;
try
{
//生成一个Excel对象实例
myExcel = new ApplicationClass();
//设置Excel的可见
myExcel.Visible = true;
if (myExcel == null)
{
MessageBox.Show("Excel程序无法启动!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
//使用dataReader获取执行sql语句后的数据
myReader = db.selectStudentByMaster(masterID).Tables["selectStudentByMaster"];
//由Excel对象得到工作薄集合
myWorkBooks = myExcel.Workbooks;
//得到一个工作薄
myWorkBook = myWorkBooks.Add(Missing.Value);
//得到工作薄中一个工作表
myWorkSheet = (Worksheet)myWorkBook.Worksheets[1];
//得到数据集的表中列的个数
myColumns = (char)(myReader.Columns.Count + 64);
//用WorkSheet对象返回一个Range对象,该对象代表:能在受保护的工作表中进行编辑的区域的子集
//参数1:表示区域名,必须为A1样式引用的宏语言
//参数2:表示区域左上角到右下角的单元格
myRange = myWorkSheet.get_Range("A1", myColumns.ToString() + "1");
//count为计算列数
count = 0;
//得到数据集中的表中的每一列的标题,然后放置到二维的对象数组中
foreach (DataColumn myNewColumn in myReader.Columns)
{
myData[0, count] = myNewColumn.ColumnName;
count++;
}
//设标题为黑体字
myWorkSheet.get_Range(myWorkSheet.Cells[1, 1], myWorkSheet.Cells[1, count]).Font.Name = "黑体";
//标题字体加粗
myWorkSheet.get_Range(myWorkSheet.Cells[1, 1], myWorkSheet.Cells[1, count]).Font.Bold = true;
//设计表格边框样式
myWorkSheet.get_Range(myWorkSheet.Cells[1, 1], myWorkSheet.Cells[1, count]).Borders.LineStyle = 1;
j = 0;
//双重循环来设置对象数组中数据(相当于表中单元格数据)
while (j < myReader.Rows.Count)
{
for (i = 0; i < myReader.Columns.Count; i++)
{
myData[j+1, i] = myReader.Rows[j][i].ToString();
}
j++;
}
//关闭读取器
//myReader.Close();
//重新设定范围
myRange = myRange.get_Resize(myReader.Rows.Count, myReader.Columns.Count);
//设定Excel范围的编辑数据源
myRange.Value2 = myData;
//自动适应大小
myRange.EntireColumn.AutoFit();
this.btnOutputExcel.Visible = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Email:gaojun_le@163.com