using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using System.Drawing.Imaging; using System.Drawing; using NPOI; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using System.Text; using NPOI.SS.Util; using System.Collections; using System.Text.RegularExpressions; using NPOI.HPSF; namespace TradeManage.TongJi { public partial class Report21 : System.Web.UI.Page { private static readonly string imageBasePath = AppDomain.CurrentDomain.BaseDirectory + "images/"; private static readonly string excelBasePath = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies/"; //private static readonly string imageBasePath = "E:\\tfstmsk\\erp\\TradeManage\\TradeManage\\images\\"; // private static readonly string excelBasePath = "E:\\tfstmsk\\erp\\TradeManage\\TradeManage\\ServerCookies\\"; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind(); } } protected void Bind() { //string jsonobjstr = HttpHelper.QueryString("json", ""); List cards = new List() { new PrintCard{ CardCode="0230010900010336",Password= "123456"}, new PrintCard{ CardCode="0230010900010339",Password="123456"}, new PrintCard{ CardCode="0230010900010340",Password= "123456"}, new PrintCard{ CardCode="0230000900010340",Password= "123456"}, new PrintCard{ CardCode="0230020900010349",Password="123456"} }; try { // cards = JsonHelper.JsonDeserialize>(jsonobjstr); Session["ListPrintCard"] = cards; gvCardList.DataSource = cards; gvCardList.DataBind(); } catch (Exception ex) { Page.ClientScript.RegisterStartupScript(this.GetType(), "key", ""); return; } } public class PrintCard { public string CardCode { get; set; } public string Password { get; set; } } /// /// 生成二维码 /// /// 二维码字符串 /// public string GetQrCode(string QrCodeStr) { string FileName = imageBasePath + "ewm.png"; //try //{ // QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.L); // QrCode qrCode = new QrCode(); // qrEncoder.TryEncode(QrCodeStr, out qrCode); // GraphicsRenderer renderer = new GraphicsRenderer(new FixedModuleSize(5, QuietZoneModules.Two), Brushes.Black, Brushes.White); // using (FileStream stream = new FileStream(FileName, FileMode.Create)) // { // renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, stream); // } //} //catch (Exception ex) //{ // FileName = ""; // throw ex; //} return FileName; } protected void btnGenerateCode_Click(object sender, EventArgs e) { //GenerateQrCodeNet(); AddPicture(); } /// /// 二维码导出到Excel /// protected void AddPicture() { try { if (!Directory.Exists(imageBasePath)) { Directory.CreateDirectory(imageBasePath); } if (!Directory.Exists(excelBasePath)) { Directory.CreateDirectory(excelBasePath); } //创建工作薄 HSSFWorkbook workbook = new HSSFWorkbook(); //create sheet HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1"); string FileName = excelBasePath + DateTime.Now.ToString("yyyyMMddhh24mss") + ".xls"; #region 右击文件 属性信息 //{ // DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation(); // dsi.Company = "http://....../"; // workbook.DocumentSummaryInformation = dsi; // SummaryInformation si = PropertySetFactory.CreateSummaryInformation(); // if (HttpContext.Current.Session["realname"] != null) // { // si.Author = HttpContext.Current.Session["realname"].ToString(); // } // else // { // if (HttpContext.Current.Session["username"] != null) // { // si.Author = HttpContext.Current.Session["username"].ToString(); // } // } //填加xls文件作者信息 // si.ApplicationName = "NPOI"; //填加xls文件创建程序信息 // si.LastAuthor = "OA系统"; //填加xls文件最后保存者信息 // si.Comments = "OA系统自动创建文件"; //填加xls文件作者信息 // si.Title = "ddd"; //填加xls文件标题信息 // si.Subject = "ddd"; //填加文件主题信息 // si.CreateDateTime = DateTime.Now; // workbook.SummaryInformation = si; //} #endregion string strQrCodePath = ""; //填充列标题以及样式 int rowsNum = 0; //行号 HSSFRow headerRow = (HSSFRow)sheet.CreateRow(rowsNum); HSSFCellStyle headStyle = (HSSFCellStyle)workbook.CreateCellStyle(); headStyle.Alignment = (HorizontalAlignment)HorizontalAlignment.CENTER; headerRow.HeightInPoints = 30; HSSFFont font = (HSSFFont)workbook.CreateFont(); font.FontHeightInPoints = 13; font.Boldweight = 700; headStyle.SetFont(font); headerRow.CreateCell(0, CellType.STRING).SetCellValue("卡号"); headerRow.CreateCell(1, CellType.STRING).SetCellValue("密码"); headerRow.CreateCell(2, CellType.STRING).SetCellValue("卡二维码"); //合并列头单元格 //CellRangeAddress cellRangeAddress = new CellRangeAddress(0, 0, 2, 4); //sheet.AddMergedRegion(cellRangeAddress); //设置列的宽度 for (int columnindex = 0; columnindex < 3; columnindex++) { headerRow.GetCell(columnindex).CellStyle = headStyle; sheet.SetColumnWidth(columnindex, 5000); } //填充数据行 HSSFRow row = null; rowsNum = 1; //行号,从第2行开始 List list = (List)Session["ListPrintCard"]; foreach (PrintCard p in list) { //写入字段值 row = (HSSFRow)sheet.CreateRow(rowsNum); HSSFCellStyle cellStyle = (HSSFCellStyle)workbook.CreateCellStyle(); cellStyle.Alignment = (HorizontalAlignment)HorizontalAlignment.CENTER; row.HeightInPoints = 120; HSSFFont cellfont = (HSSFFont)workbook.CreateFont(); cellfont.FontHeightInPoints = 10; cellStyle.SetFont(cellfont); row.CreateCell(0, CellType.STRING).SetCellValue(p.CardCode); row.CreateCell(1, CellType.STRING).SetCellValue(p.Password); row.CreateCell(2, CellType.BLANK).SetCellValue(""); //合并单元格 //CellRangeAddress rowCellRangeAddress = new CellRangeAddress(rowsNum, rowsNum, 2, 4); //sheet.AddMergedRegion(rowCellRangeAddress); strQrCodePath = GetQrCode(p.CardCode); byte[] bytes = System.IO.File.ReadAllBytes(strQrCodePath); int pictureIdx = workbook.AddPicture(bytes, PictureType.PNG); // Create the drawing patriarch. This is the top level container for all shapes. HSSFPatriarch patriarch = (HSSFPatriarch)sheet.CreateDrawingPatriarch(); //add a picture HSSFClientAnchor anchor = new HSSFClientAnchor(0, 10, 1023, 0, 2, rowsNum, 2, rowsNum); HSSFPicture pict = (HSSFPicture)patriarch.CreatePicture(anchor, pictureIdx); pict.Resize(); //设置行的高度 for (int rowindex = 0; rowindex < 3; rowindex++) { row.GetCell(rowindex).CellStyle = cellStyle; } rowsNum++; //删除图片文件 //if (File.Exists(strQrCodePath)) //{ // File.Delete(strQrCodePath); //} } //供浏览器下载Excel if (HttpContext.Current.Request.Browser.Browser == "IE") FileName = HttpUtility.UrlEncode(FileName); using (MemoryStream ms = new MemoryStream()) { workbook.Write(ms); ms.Flush(); ms.Position = 0; HttpContext curContext = HttpContext.Current; // 设置编码和附件格式 curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = Encoding.UTF8; curContext.Response.Charset = ""; curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8)); curContext.Response.BinaryWrite(ms.GetBuffer()); ms.Close(); ms.Dispose(); curContext.Response.End(); } } catch (Exception ex) { Page.ClientScript.RegisterStartupScript(this.GetType(), "key", ""); } } protected void gvCardList_RowCommand(object sender, GridViewCommandEventArgs e) { string cardCode = e.CommandArgument.ToString(); } } }