/// <summary>
/// HDH 20180910 数据导出处理,通过传输的字段集导出EXCEL字段
/// </summary>
/// <param name="Dt">要导出的数据的DATATABLE</param>
/// <param name="FieldsName">导出的字段名要与DATATABLE中的列名一致</param>
public static MemoryStream outDataExoprtExcel(DataTable Dt, string FieldsName)
{
HSSFWorkbook workbook = new HSSFWorkbook(); // 工作簿HSSFWorkbook
ISheet sheet = workbook.CreateSheet(DateTime.Now.ToString("yyyyMMdd")); // 工作表
//HSSFCellStyle unLockCellStyle = (HSSFCellStyle)workbook.CreateCellStyle();
//unLockCellStyle.IsLocked = true;
IRow row = sheet.CreateRow(0);
int RowNo = 1;
row.CreateCell(0).SetCellValue("编号");
for (int i = 0; i < FieldsName.Split(',').Length; i++)
{
row.CreateCell(i + 1).SetCellValue(FieldsName.Split(',')[i]);
}
if (Dt.Rows.Count > 0)
{
foreach (DataRow Dr in Dt.Rows)
{
IRow SheedRow = sheet.CreateRow(RowNo);
SheedRow.CreateCell(0).SetCellValue(RowNo.ToString());
//SheedRow.CreateCell(0).CellStyle.IsLocked = false;
for (int i = 0; i < FieldsName.Split(',').Length; i++)
{
SheedRow.CreateCell(i + 1).CellStyle.IsLocked = false;
if (Dr[FieldsName.Split(',')[i]].ToString().IndexOf("Content/") > -1)
{
SheedRow.Height = 1800;
sheet.SetColumnWidth(i + 1, 1600);
string imgPath = DrvGetAppVar("DirectName") + Dr[FieldsName.Split(',')[i]].ToString();
imgPath = HttpContext.Current.Server.MapPath(imgPath.Replace("//", "/"));
AddPicToExcel(sheet, workbook, imgPath, RowNo, i + 1,row);
}
else
{
SheedRow.CreateCell(i + 1).SetCellValue(Dr[FieldsName.Split(',')[i]].ToString());
}
}
RowNo++;
}
}
MemoryStream stream = new MemoryStream();
workbook.Write(stream);
return stream;
}
#region 向EXCEL插入图片
/// <summary>
/// 向EXCEL插入图片
/// </summary>
/// <param name="sheet">ISheet对象</param>
/// <param name="workbook">HSSFWorkbook对象</param>
/// <param name="fileurl">图片绝对路径</param>
/// <param name="row">列值</param>
/// <param name="col">行值</param>
/// <param name="SheedRow">操作列</param>
public static void AddPicToExcel(ISheet sheet, HSSFWorkbook workbook, string fileurl, int row, int col, IRow SheedRow)
{
try
{
//add picture data to this workbook.
string FileName = fileurl;
byte[] bytes = System.IO.File.ReadAllBytes(FileName);
//sheet.SetColumnWidth(row, 2900);
//SheedRow.Height = 1600;
if (!string.IsNullOrEmpty(FileName))
{
int pictureIdx = workbook.AddPicture(bytes, NPOI.SS.UserModel.PictureType.JPEG);
HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 100, 50, col, row, col + 1, row + 1);
//##处理照片位置,【图片左上角为(col, row)第row+1行col+1列,右下角为( col +1, row +1)第 col +1+1行row +1+1列,宽为100,高为50
HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx);
// pict.Resize();这句话一定不要,这是用图片原始大小来显示
}
}
catch (Exception ex)
{
//throw ex;
}
}
#endregion
查看更多关于NPOI组件导出EXCEL文档源码HSSFWorkbook实例带图片导出的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did145