[转载]c#导出到excel

//导出Excel的方法
  private void ExportExcel()
  

   DataSet ds
=dtsSelect;//数据源
   if(ds==nullreturn

   
string saveFileName=""
   
bool fileSaved=false
   SaveFileDialog saveDialog
=new SaveFileDialog(); 
   saveDialog.DefaultExt 
="xls"
   saveDialog.Filter
="Excel文件|*.xls"
   saveDialog.FileName 
="Sheet1"
   saveDialog.ShowDialog(); 
   saveFileName
=saveDialog.FileName; 
   
if(saveFileName.IndexOf(":")<0return//被点了取消 

   Excel.Application xlApp
=new Excel.Application(); 

   
if(xlApp==null)
   

    MessageBox.Show(
"无法创建Excel对象,可能您的机子未安装Excel"); 
    
return
   }
 

   Excel.Workbooks workbooks
=xlApp.Workbooks; 
   Excel.Workbook workbook
=workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); 
   Excel.Worksheet worksheet
=(Excel.Worksheet)workbook.Worksheets[1];//取得sheet1 
   
//写入字段 
   for(int i=0;i<ds.Tables[0].Columns.Count;i++)
   

    worksheet.Cells[
1,i+1]=ds.Tables[0].Columns[i].ColumnName; 
   }
 
   
//写入数值 
   
   
for(int r=0;r<ds.Tables[0].Rows.Count;r++)
   

    
for(int i=0;i<ds.Tables[0].Columns.Count;i++)
    

     worksheet.Cells[r
+2,i+1]=ds.Tables[0].Rows[r][i]; 
    }
 
    System.Windows.Forms.Application.DoEvents(); 
   }
 
   worksheet.Columns.EntireColumn.AutoFit();
//列宽自适应。
   if(cmbxType.Text!="Notification")
   
{
    Excel.Range rg
=worksheet.get_Range(worksheet.Cells[2,2],worksheet.Cells[ds.Tables[0].Rows.Count+1,2]);
    rg.NumberFormat
="00000000";
   }

   
if(saveFileName!="")
   

    
try
    

     workbook.Saved 
=true
     workbook.SaveCopyAs(saveFileName); 
     fileSaved
=true
    }

    
catch(Exception ex)
    

     fileSaved
=false
     MessageBox.Show(
"导出文件时出错,文件可能正被打开!\n"+ex.Message); 
    }
 
   }

   
else
   

    fileSaved
=false
   }
 
   xlApp.Quit(); 
   GC.Collect();
//强行销毁 
   if(fileSaved && System.IO.File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); //打开EXCEL
  }


posted @   水静痕迹  阅读(105)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示