datagird数据导出到excel中???/ 我想要做winforms中datagrid数据导出到期excel中,每次导出时文件名不一样不知哪位大侠给提供一段代码看看,,,本人现在初学winform,太多不懂,请赐教.... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这类代码很多,cnblogs上面就有 自己找一下了 1.引用 COM组件 Excel.dll 2.实现如下 public void ExportExcel(){ DataSet ds=this.DataSet;//取得dataGrid绑定的DataSet if(ds==null) return; 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(":")<0) return; //被点了取消 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 Excel.Range range; string oldCaption=this.CaptionText; long totalCount=ds.Tables[0].Rows.Count; long rowRead=0; float percent=0; worksheet.Cells[1,1]=this.CaptionText; //写入字段 for(int i=0;i<ds.Tables[0].Columns.Count;i++){ worksheet.Cells[2,i+1]=ds.Tables[0].Columns[i].ColumnName; range=(Excel.Range)worksheet.Cells[2,i+1]; range.Interior.ColorIndex = 15; range.Font.Bold = true; } //写入数值 this.CaptionVisible = true; 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+3,i+1]=ds.Tables[0].Rows[r][i]; } rowRead++; percent=((float)(100*rowRead))/totalCount; this.CaptionText = "正在导出数据["+ percent.ToString("0.00") +"%]..."; Application.DoEvents(); } this.CaptionVisible = false; this.CaptionText = oldCaption; range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[ds.Tables[0].Rows.Count+2,ds.Tables[0].Columns.Count]); range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null); range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic; range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =Excel.XlLineStyle.xlContinuous; range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight =Excel.XlBorderWeight.xlThin; if(ds.Tables[0].Columns.Count>1){ range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic; range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous; range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin; } 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 && File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); } DotNetBar和DevExpress的优缺点 求object 的转换成int 类型的 ,求赐教 视频文件转换成一组图片流 C# windows 托管程序后 。。(急) C# 怎么将一段文字设定为选定 C# 取历史记录 接口方式 一个很奇怪的问题?/非常奇怪 *.txt和*.mdb可作为资源文件吗? 如何在ascx中加入flash?我加入后在应用ascx的页面中不能播放! C#如何使用LINQ to SQL 实现嵌套查询 拖动文件(解决问题后增加100分) 怎样拖动TabControl的TabPage文本那块区域到另外一个TabPage上,即相互交换位置(WinForm)
DataSet ds=this.DataSet;//取得dataGrid绑定的DataSet
if(ds==null) return; 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(":")<0) return; //被点了取消 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
Excel.Range range; string oldCaption=this.CaptionText;
long totalCount=ds.Tables[0].Rows.Count;
long rowRead=0;
float percent=0; worksheet.Cells[1,1]=this.CaptionText;
//写入字段
for(int i=0;i<ds.Tables[0].Columns.Count;i++){
worksheet.Cells[2,i+1]=ds.Tables[0].Columns[i].ColumnName;
range=(Excel.Range)worksheet.Cells[2,i+1];
range.Interior.ColorIndex = 15;
range.Font.Bold = true; }
//写入数值
this.CaptionVisible = true;
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+3,i+1]=ds.Tables[0].Rows[r][i];
}
rowRead++;
percent=((float)(100*rowRead))/totalCount;
this.CaptionText = "正在导出数据["+ percent.ToString("0.00") +"%]...";
Application.DoEvents();
}
this.CaptionVisible = false;
this.CaptionText = oldCaption; range=worksheet.get_Range(worksheet.Cells[2,1],worksheet.Cells[ds.Tables[0].Rows.Count+2,ds.Tables[0].Columns.Count]);
range.BorderAround(Excel.XlLineStyle.xlContinuous,Excel.XlBorderWeight.xlThin,Excel.XlColorIndex.xlColorIndexAutomatic,null); range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle =Excel.XlLineStyle.xlContinuous;
range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Weight =Excel.XlBorderWeight.xlThin; if(ds.Tables[0].Columns.Count>1){
range.Borders[Excel.XlBordersIndex.xlInsideVertical].ColorIndex =Excel.XlColorIndex.xlColorIndexAutomatic;
range.Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders[Excel.XlBordersIndex.xlInsideVertical].Weight = Excel.XlBorderWeight.xlThin;
} 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 && File.Exists(saveFileName)) System.Diagnostics.Process.Start(saveFileName); }