C# excel导出报表
C# excel导出报表,把查询到的数据循环插入到excel(模板)中,最好给个例子,谢谢!
[解决办法]
google: NPOI
[解决办法]
- C# code
private void button1_Click(object sender, System.EventArgs e){ EI.EIInfo inBlock = new EI.EIInfo(); //EI.EIInfo outBlock = new EI.EIInfo(); string Sql1 = "select * from tdmst01"; inBlock.SetColName(1, "sql1"); inBlock.SetColVal(1, "sql1", Sql1); EI.EIInfo outBlock = EI.EITuxedo.CallService("pccf02_qry", inBlock); Microsoft.Office.Interop.Excel.Application ep ; Microsoft.Office.Interop.Excel.Workbook ew ; Microsoft.Office.Interop.Excel.Worksheet ews ; //outBlock.GetBlockVal(efGrid1); //object filename = "@C:\\Documents and Settings\\Administrator\\桌面\\aaa.xls"; object MissingValue = Type.Missing; string strKeyWord = ""; //指定要搜索的文本,如果有多个,则声明string[] object oText = strKeyWord.Trim().ToUpper(); //Microsoft.Office.Interop.Excel.Range oRange; try { ep = new Microsoft.Office.Interop.Excel.ApplicationClass(); ew = ep.Workbooks.Open(@"D:\\aaa.xls", MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue, MissingValue); ews = (Microsoft.Office.Interop.Excel.Worksheet)ew.Worksheets[1]; //Microsoft.Office.Interop.Excel.ApplicationClass excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); //Workbook wBook = excel.Workbooks.Add(true); //Worksheet wSheet = (Microsoft.Office.Interop.Excel.Worksheet)ew.ActiveSheet; //oRange = ((Microsoft.Office.Interop.Excel.Range)ews.UsedRange).Find( // oText, MissingValue, MissingValue, // MissingValue, MissingValue, Microsoft.Office.Interop.Excel.XlSearchDirection.xlNext, // MissingValue, MissingValue, MissingValue); //Microsoft.Office.Interop.Excel.Range rng3; //Microsoft.Office.Interop.Excel.Range rng3 = ews.get_Range("C6", Missing.Value); //rng3.Value2 = "Hello"; int i, j; for (j = 1; j <= outBlock.blk_info[0].Col; j++) { ews.Cells[1, j] = outBlock.GetColName(j); } for (i = 1; i <= outBlock.blk_info[0].Row; i++) { for (j = 1; j <= outBlock.blk_info[0].Col; j++) { ews.Cells[i+1, j] = outBlock.GetColVal(i, j); } } //ews.Cells[2, 1] = "test8: "; //excel.Cells[4, 5] = "本公司传真: " ; //excel.Cells[5, 5] = "联系人: " ; //excel.Cells[4, 1] = "客户: " ; //excel.Cells[5, 1] = "联系人: " ; //excel.Cells[3, 8] = "户名:"; ////excel.Cells[3, 9] = AccountName; //excel.Cells[4, 8] = "开户行:"; ////excel.Cells[4, 9] = BranchName; //excel.Cells[5, 8] = "帐号:"; //excel.Cells[5, 9] = "’" + AccountID; //设置禁止弹出保存和覆盖的询问提示框 ep.DisplayAlerts = false; ep.AlertBeforeOverwriting = false; //保存工作薄 // wBook.Save(); //每次保存激活的表,这样才能多次操作保存不同的Excel表,默认保存位置是在”我的文档" //excel.Cells.Font.Size = 12; //excel.Cells.Font.Bold = false; //// Excel.Range m_objRange = m_objRange.get_Range(1, 3); // wSheet.get_Range(excel.Cells[1, 3], excel.Cells[1, 3]).Font.Size = 24; // wSheet.get_Range(excel.Cells[1, 3], excel.Cells[1, 3]).Font.Bold = true; // wSheet.get_Range(excel.Cells[3, 1], excel.Cells[3, 1]).Font.ColorIndex = 3;//此处设为红色,不能用Font.Color来设置颜色 // MBT Shoes; // m_objRange.Cells.Font.Size = 24; // m_objRange.Cells.Font.Bold = true; //excel.ActiveWorkbook.SaveCopyAs(filename); ew.Save(); ep.Visible = true; //激活Excel } catch (Exception Exc) { //throw new Exception("", Exc); ews = null; ew = null; //ep.Quit(); //这一句是非常重要的,否则Excel对象不能从内存中退出 ep = null; } //excel.Quit(); }
[解决办法]
- C# code
//导出Excel的方法 private void ExportExcel() { DataSet ds=dtsSelect;//数据源 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 //写入字段 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 }