Excel编程之Dataset导出到excel
来源:互联网 发布:淘宝对实体店的影响 编辑:程序博客网 时间:2024/09/21 08:50
public class DataSetToExcel
{
///
/// 将数据集中的数据导出到EXCEL文件,可导出乡村代码
///
/// 输入数据集
/// 是否显示该EXCEL文件
/// 保存路径
///
public static bool DStoExcel(DataSet dataSet, bool isShowExcle, string excelFileFullPath)
{
//获取Dataset中的一个表
DataTable dataTable = dataSet.Tables[0];//Dataset数据集中的第一个表
int rowNumber = dataTable.Rows.Count;//行数,不包括字段名 int columnNumber = dataTable.Columns.Count;//列数 int colIndex = 0; if (rowNumber == 0) { return false; } //建立Excel对象 Application excel = new Application(); Workbook workbook = excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet ); Worksheet worksheet = (Worksheet)workbook.Worksheets[1]; excel.Visible = isShowExcle; //Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[1]; //生成字段名称(表头) foreach (DataColumn col in dataTable.Columns)//遍历表中所有列 { colIndex++; if (colIndex ==4||colIndex==5)//获取4列或者5列表头,下标从1开始,1对应第一列 { excel.Cells[1, colIndex-3] = col.ColumnName;//遍历第一行中各列 } excel.Cells[1, 3] = "备注";//设置一个新的列,表头 } //生成表的主体 object[,] objData = new object[rowNumber, columnNumber]; for (int r = 0; r < rowNumber; r++)//表的正文是以下标从0开始的,也就是标题栏下面是每行每列是从0开始的 { for (int c = 3; c <=4; c++)//列,原始表的4和5列 { objData[r, c-3] = dataTable.Rows[r][c]; } } // 写入Excel var range = worksheet.Range[excel.Cells[2, 1], excel.Cells[rowNumber + 1, columnNumber]];//2行一列开始逐个写入 range.NumberFormat = "@";//设置单元格为文本格式 range.Value2 = objData; #region 设置表格式 //设置表格中格式 //var range1 = worksheet.Range[excel.Cells[2, 1], excel.Cells[rowNumber + 1, 1]].NumberFormat = "yyyy-m-d h:mm"; var range1 = worksheet.Range[excel.Cells[2, 5], excel.Cells[rowNumber + 1, 5]]; range1.NumberFormat = "000000";//格式为邮政编码 var range2 = worksheet.Range[excel.Cells[2, 2], excel.Cells[rowNumber + 1, 2]];//第八列全部设置为邮编格式 range2.NumberFormat = "000000"; range2.HorizontalAlignment = 2;//设置居中 //var range3 = worksheet.Range[excel.Cells[2, 4], excel.Cells[rowNumber, 4]]; //worksheet.Range[excel.Cells[2, 1], excel.Cells[rowNumber, 1]].Insert(range3); #endregion //保存Excel文件 //workbook.SaveCopyAs(excelFileFullPath); workbook.SaveAs(excelFileFullPath, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value); // @"E:\MyTemp\" return true; } /// <summary> /// 重写上面方法,只是没有保存到本地的功能 /// </summary> /// <param name="dataSet"></param> /// <param name="isShowExcle"></param> /// <returns></returns> public static bool DStoExcel(DataSet dataSet, bool isShowExcle) { //获取Dataset中的一个表 DataTable dataTable = dataSet.Tables[1]; int rowNumber = dataTable.Rows.Count;//行数,不包括字段名 int columnNumber = dataTable.Columns.Count;//列数 int colIndex = 0; if (rowNumber == 0) { return false; } //建立Excel对象 Application excel = new Application(); Workbook workbook = excel.Workbooks.Add(XlWBATemplate.xlWBATWorksheet ); Worksheet worksheet = (Worksheet)workbook.Worksheets[1]; excel.Visible = isShowExcle; //Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel.Worksheets[1]; //生成字段名称(表头) foreach (DataColumn col in dataTable.Columns) { colIndex++; if (colIndex<=8)//一直到H(8)列 { excel.Cells[1, colIndex] = col.ColumnName;//遍历第一行中各列 } } object[,] objData = new object[rowNumber, columnNumber]; for (int r = 0; r < rowNumber; r++)//表的正文是以下标从0开始的,也就是标题栏下面是每行每列是从0开始的 { for (int c = 0; c <=7; c++)//列 { objData[r, c] = dataTable.Rows[r][c]; } } // 写入Excel var range = worksheet.Range[excel.Cells[2, 1], excel.Cells[rowNumber + 1, columnNumber]];//2行一列开始逐个写入 range.NumberFormat = "@";//设置单元格为文本格式 range.Value2 = objData; //var range1 = worksheet.Range[excel.Cells[2, 1], excel.Cells[rowNumber + 1, 1]].NumberFormat = "yyyy-m-d h:mm"; var range1 = worksheet.Range[excel.Cells[2, 5], excel.Cells[rowNumber + 1, 5]]; range1.NumberFormat = "000000";//格式为邮政编码 var range2 = worksheet.Range[excel.Cells[2, 8], excel.Cells[rowNumber + 1, 8]];//第八列全部设置为邮编格式 range2.NumberFormat = "000000"; // @"E:\MyTemp" return true; } /// <summary> /// 可以将DataSet中某个Datatable导入到excel中,便于查看 /// </summary> /// <param name="dt">datatable</param> /// <param name="isOpen">是否打开</param> /// <returns></returns> public static bool DatataleToExcel(DataTable dt, bool isOpen) { if (dt != null) { object obj = Missing.Value; //建立一个新的excel,并在其中添加workbook Microsoft.Office.Interop.Excel.Application excel = new ApplicationClass(); Workbook workbook = excel.Workbooks.Add(true); Worksheet xlSheet = (Worksheet)workbook.Worksheets[1]; xlSheet.Name = dt.TableName; int colIndex = 1; int rowCount = dt.Rows.Count; int colCount = dt.Columns.Count; //处理列名 for (int i = 0; i < colCount; i++) { xlSheet.Cells[1,colIndex] = dt.Columns[i].ColumnName; colIndex++; } //处理行,填充到worksheet object[,] objData = new object[rowCount, colCount]; for (int i = 0; i < rowCount; i++) { for (int j = 0; j < colCount; j++) { objData[i,j] = dt.Rows[i][j]; } } //设置单元格格式 var range = xlSheet.Range[excel.Cells[2, 1], excel.Cells[rowCount + 1, colCount]]; range.Value2 = objData; range.NumberFormat = "@";//设置单元格为文本格式 excel.Visible = isOpen; } return true; }}
1 0
- Excel编程之Dataset导出到excel
- Dataset导出到excel
- DataSet导出到Excel
- dataset 导出到 excel
- WinForm导出DataSet到Excel
- DataSet导出 到Excel 截取导出
- 将DataSet导出到Excel文件中
- Delphi从DataSet导出到Excel
- 从DataSet导出数据到excel!!
- 导出Dataset到Excel,并保持格式。
- 数据集DataSet导出到Excel
- GridView DataSet、Control 导出到 Excel
- 导出DataSet的数据到Excel中
- 数据库用DataSet导出到Excel
- 将DATASET中的内容导出到EXCEL
- DataSet导出到Excel (c#)
- 把dataset数据保存到excel,GridView导出到excel
- [C#]网格数据导出到Excel,Excel转DataSet
- Spring Security 保护 Web 应用的安全
- BZOJ 4554: [Tjoi2016&Heoi2016]游戏
- Java实现栈2
- 设计模式-单例模式
- gddddddddddd
- Excel编程之Dataset导出到excel
- 【day-7】组合-不重复
- HDU 4718 The LCIS on the Tree
- stanford-postagger的使用
- Spring Session原理
- eclipseWeb项目资源路径学习笔记
- 网络中的IP地址 子网掩码 网关
- PHP error_reporting() 错误控制函数
- 《mysql学习》-- 索引