读书人

C# excel导出报表,该怎么处理

发布时间: 2012-04-14 17:14:21 作者: rapoo

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  } 

读书人网 >C#

热点推荐