namespace dxhbskymDemo { public partial class ExcelForm : DevExpress.XtraEditors.XtraForm { public ExcelForm() { InitializeComponent(); } #region 導出Excel //導出按鈕 private void sbtnDaochu_Click(object sender, EventArgs e) { string fileName = "";//要保存的excel文件名 SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "導出1997-2003版本Excel(*.xls)|*.xls,導出2007版本Excel(*.xlsx)|*.xlsx";
//擴展名 sfd.FileName = "河北省項目匯總表";// if (sfd.ShowDialog() == DialogResult.OK) { fileName = sfd.FileName; //導入 outPutExcel(fileName); } }
//導出Excel的方法 private void outPutExcel(string saveFilepath) { bool isShowExcel = false; DataTable dt = new DataTable();//將數據庫取出的數據源轉成DataTable if (dt == null) { return; } if (dt.Rows.Count == 0) { return; } Missing miss = Missing.Value; Excel.Application xlApp = new Excel.Application(); if (xlApp == null) { XtraMessageBox.Show("請確保您的電腦已經安裝Excel!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //xlApp.UserControl = true; Excel.Workbooks workBooks = xlApp.Workbooks; //Excel.Workbook workBook = workBooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);//創建新的 Excel.Workbook workBook = workBooks.Add(System.AppDomain.CurrentDomain.BaseDirectory + "excel\\項目匯總表.xls");//根據現有excel模板產生新的Workbook Excel.Worksheet workSheet = (Excel.Worksheet)workBook.Worksheets[1];//獲取sheet1
xlApp.DisplayAlerts = false;//保存Excel的時候,不彈出是否保存的窗口直接進行保存
workSheet.get_Range("A3", "B3").Merge(workSheet.get_Range("A3", "B3").MergeCells);//合並單元格 if (workSheet == null) { XtraMessageBox.Show("請確保您的電腦已經安裝Excel!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } try { Excel.Range range=null; xlApp.Visible = isShowExcel;//若是true,則在導出的時候會顯示excel界面 int totalCount = dt.Rows.Count; workSheet.Cells[1, 1] = "河北省石家庄市項目匯總表";//導出標題 //寫入數值 for (int i = 0; i < dt.Rows.Count; i++) { workSheet.Cells[i + 4, 1] = dt.Rows[i]["xmxh"];//項目序號 //workSheet.Cells[5,1]=””;//表示第五行與第一列交點的那個單元格坐標
workSheet.Cells[i + 4, 2] = dt.Rows[i]["xmmc"];//項目名稱 ((Excel.Range)workSheet.Cells[i+4, 2]).ColumnWidth = 12;//設置列寬
workSheet.Cells[i + 4, 3] = dt.Rows[i]["bz"];//備注 }
//計算sum和
Excel.Range range2 = workSheet.get_Range("C9", Type.Missing);
range2.Formula = "=SUM(C4:C8)";
range2.Calculate();
workBook.SaveAs(saveFilepath,Type.Missing,Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); //workSheet.SaveAs(saveFilepath, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); workBooks.Close(); } catch (Exception ex) { XtraMessageBox.Show("Excel導出失敗,錯誤:" + ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); xlApp.Quit(); regExpre.KillExcelProcess(); } finally { xlApp.Quit(); regExpre.KillExcelProcess(); } } #endregion } }
