主页 > 手机  > 

C#:创建Excel文件并在Excel中写入数据库中的数据

C#:创建Excel文件并在Excel中写入数据库中的数据

实现思路: 1.检查数据是否可导出 2.弹出文件保存对话框 3.删除已存在的同名文件 4.创建 Excel 应用实例 5.导出表头 6.导出数据 7.保存 Excel 文件 8.释放 Excel 资源 9.导出成功提示

static void ExportToExcel(DataTable Data, string fileName) { // 如果表格中没有行,提示用户无数据可导出 if (Data.Rows.Count == 0) { return; } // 声明保存文件的对话框 SaveFileDialog saveFileDialog = new SaveFileDialog(); saveFileDialog.DefaultExt = "xls"; // 设置默认后缀 string FilterFile = "文件"; saveFileDialog.Filter = "EXCEL" + FilterFile + " (*.XLS) |*.xls|EXCEL " + FilterFile + " (*.XLSX)|*.xlsx"; // 文件类型过滤 saveFileDialog.InitialDirectory = System.IO.Directory.GetCurrentDirectory(); // 设置默认路径为当前程序路径 saveFileDialog.FileName = fileName; // 设置默认文件名 // 打开保存对话框,用户取消则退出 if (saveFileDialog.ShowDialog() == DialogResult.Cancel) { return; } // 获取用户输入的文件路径 string fileNameString = saveFileDialog.FileName; // 如果文件路径为空,直接退出 if (fileNameString.Trim() == " ") { return; } // 获取表格行数和列数 int rowscount = Data.Rows.Count; int colscount = Data.ColumnCount; // 验证行数和列数的合法性 if (rowscount <= 0 || colscount <= 0 || rowscount > 65536 || colscount > 255) { return; // 行数或列数非法直接退出 } // 如果文件已存在,尝试删除 System.IO.FileInfo file = new System.IO.FileInfo(fileNameString); if (file.Exists) { try { file.Delete(); } catch (Exception error) { return; } } // 声明 Excel 应用程序对象 Microsoft.Office.Interop.Excel.Application objExcel = null; Microsoft.Office.Interop.Excel.Workbook objWorkbook = null; Microsoft.Office.Interop.Excel.Worksheet objsheet = null; try { objExcel = new Microsoft.Office.Interop.Excel.Application(); // 创建 Excel 应用实例 objWorkbook = objExcel.Workbooks.Add(System.Reflection.Missing.Value); // 新建工作簿 objsheet = (Microsoft.Office.Interop.Excel.Worksheet)objWorkbook.ActiveSheet; // 获取活动工作表 objExcel.Visible = false; // 设置 Excel 不可见 // 写入表头到 Excel int displayColumnsCount = 1; // 可见列的计数器,Excel 的列索引从 1 开始,所以 displayColumnsCount = 1。 for (int i = 0; i <= Data.ColumnCount - 1; i++) { if (Data.Columns[i].Visible == true) // 只导出可见列 { objExcel.Cells[1, displayColumnsCount] = Data.Columns[i].HeaderText.Trim(); displayColumnsCount++; } } // 写入数据到 Excel for (int row = 0; row <= Data.RowCount - 1; row++) { displayColumnsCount = 1; // 重置列计数器 for (int col = 0; col < colscount; col++) { if (Data.Columns[col].Visible == true) // 只导出可见列 { try { ((Microsoft.Office.Interop.Excel.Range)objExcel.Cells[row + 2, displayColumnsCount]).NumberFormatLocal = "@"; // 设置单元格格式为文本 objExcel.Cells[row + 2, displayColumnsCount] = Data.Rows[row].Cells[col].Value.ToString().Trim(); // 写入单元格数据 displayColumnsCount++; } catch (Exception) { // 忽略单元格写入错误 } } } } objsheet.Columns.EntireColumn.AutoFit(); // 设置列宽自适应 // 保存 Excel 文件 objWorkbook.SaveAs(fileNameString, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value); } catch (Exception error) { error.ErrorProcessing.WriteErrrorLog(error.ToString()); // 写入错误日志 } finally { // 关闭 Excel 应用程序 if (objWorkbook != null) { objExcel.DisplayAlerts = false; // 禁止弹出警告框 objExcel.AlertBeforeOverwriting = false; // 禁止覆盖警告 objWorkbook.Close(System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value); } if (objExcel != null && objExcel.Workbooks != null) { objExcel.Workbooks.Close(); } if (objExcel != null) { objExcel.Quit(); // 退出 Excel 应用程序 } objsheet = null; // 释放工作表对象 objWorkbook = null; // 释放工作簿对象 objExcel = null; // 释放 Excel 应用对象 } }
标签:

C#:创建Excel文件并在Excel中写入数据库中的数据由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C#:创建Excel文件并在Excel中写入数据库中的数据