命名空间
using NPOI; using NPOI.HPSF; using NPOI.HSSF; using NPOI.HSSF.UserModel; using NPOI.HSSF.Util; using NPOI.POIFS; using NPOI.Util; using NPOI.SS.UserModel; using NPOI.SS.Util; using NPOI.SS.Formula; using NPOI.SS; ---------------------------------------------------------------------------------------------------------- /// <summary> /// 将dataTable中所有数据导出至excel /// </summary> /// <param name="dt">datatable</param> /// <param name="savePath">保存路径</param> /// <param name="sheetName">表单名称</param> private void createExcel(DataTable dt, string savePath, string sheetName) { if (dt.Rows.Count > 0) { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet(sheetName); //设置标题行样式 HSSFFont font = (HSSFFont)workbook.CreateFont(); font.Boldweight = 600; HSSFCellStyle styleTitle = (HSSFCellStyle)workbook.CreateCellStyle(); styleTitle.SetFont(font); //首先生成标题 sheet.CreateRow(0); for (int col = 0; col < dt.Columns.Count; col++) { string colName = dt.Columns[col].ColumnName.Trim();//获取标题名 //sheet.CreateRow(0).CreateCell(col).SetCellValue(colName); //IRow row0 = sheet.GetRow(0); sheet.GetRow(0).CreateCell(col).SetCellValue(colName); sheet.GetRow(0).GetCell(col).CellStyle = styleTitle; sheet.SetColumnWidth(col, 28 * 256);//设置列宽 } //遍历所有数据并填充 for (int row = 0; row < dt.Rows.Count; row++) { int currentRow = row + 1;//因为第0行是标题 sheet.CreateRow(currentRow); for (int colC = 0; colC < dt.Columns.Count; colC++) { sheet.GetRow(currentRow).CreateCell(colC).SetCellValue(dt.Rows[row][colC].ToString()); } } //保存excel FileStream fileSave = new FileStream(savePath, FileMode.Create); workbook.Write(fileSave); fileSave.Close(); } } --------------------------------------------------------------------------------------------------------------------------------------- 生成图片 string picSavePath = AppDomain.CurrentDomain.BaseDirectory + "UploadFiles\\EnterpriseLogo\\" + EnterpriseLogo_str;//因为这里是图片的名称,所以直接加上去 byte[] bytes = System.IO.File.ReadAllBytes(picSavePath); string extend=EnterpriseLogo_str.Substring(EnterpriseLogo_str.LastIndexOf(".")); int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG);//默认值为jpg if (extend.ToLower() == ".png") { pictureIdx = workbook.AddPicture(bytes, PictureType.PNG); } if (extend.ToLower() == ".emf") { pictureIdx = workbook.AddPicture(bytes, PictureType.EMF); } try { HSSFPatriarch patriarch = (HSSFPatriarch)sheet1.CreateDrawingPatriarch(); HSSFClientAnchor anchor = new HSSFClientAnchor(50, 50, 800, 50, 4, 1, 5, 4);//注意这里的参数 HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx); } catch { }//这里不报错出来 -------------------------------------------------------------------------------------------------------------- 数据少的下拉列表 CellRangeAddressList regions_sex = new CellRangeAddressList(2, 2, 3, 3); DVConstraint constrain_sex = DVConstraint.CreateExplicitListConstraint(new string[] { "男性", "女性" }); HSSFDataValidation dataValidate_sex = new HSSFDataValidation(regions_sex, constrain_sex); templeteSheet.AddValidationData(dataValidate_sex); ------------------------------------------------------------------------------------------------------------- 数据多的下拉列表 HSSFName rang = (HSSFName)workbook.CreateName(); string rowcount ="Sheet3!$A$1:$A$"+ DomainsListStr.Length.ToString(); rang.RefersToFormula = rowcount; rang.NameName = "DomainsList"; CellRangeAddressList regions_domains = new CellRangeAddressList(hang, hang, lie, lie); DVConstraint constrain_domains = DVConstraint.CreateFormulaListConstraint("DomainsList"); HSSFDataValidation dataValidate_domains = new HSSFDataValidation(regions_domains, constrain_domains); templeteSheet.AddValidationData(dataValidate_domains);//长于255报错 |