1 try
2 {
3 while (this.UploadQueue.Count > 0)
4 {
5 var row = this.UploadQueue.Dequeue();
6 string url = row[2].ToString();
7 GC.Collect();
8 using (var ms = new MemoryStream())
9 {
10 string strName = row[1].ToString();
11 strName = System.IO.Path.GetFileNameWithoutExtension(strName.Substring(strName.LastIndexOf('/') + 1));
12
13 #region 保存到本地
14 ThoughtWorks.QRCode.Codec.QRCodeEncoder qrc = new ThoughtWorks.QRCode.Codec.QRCodeEncoder();
15 qrc.QRCodeEncodeMode = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ENCODE_MODE.BYTE;
16 qrc.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.M;
17 qrc.QRCodeScale = 8;
18 qrc.QRCodeVersion = 4;
19
20 Bitmap bitmap = qrc.Encode(url);
21 string path = BaseDirectory + "\\二维码图片\\";
22 if (Directory.Exists(path) == false) Directory.CreateDirectory(path);
23 string filename = System.IO.Path.Combine(path, strName + ".png"); ;//保存到本地
24 bitmap.Save(filename: filename);
25 bitmap.Dispose();
26 #endregion
27 }
28 }
29 }
30 catch (Exception exception)
31 {
32 Show(exception.Message);
33 }
1 protected void Button1_Click(object sender, EventArgs e)
2 {
3 string filePath = ""; ;
4 FileStream stream = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read);
5 //1. Reading from a binary Excel file ('97-2003 format; *.xls)
6 //IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
7
8 //2. Reading from a OpenXml Excel file (2007 format; *.xlsx)
9 //IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
10 string strExtension = System.IO.Path.GetExtension(filePath);
11 IExcelDataReader excelReader = null;
12 //区别excel版本
13 if (strExtension.IndexOf("xlsx")>=0)
14 {
15 excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
16 }
17 else
18 {
19 excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
20 }
21 excelReader.IsFirstRowAsColumnNames = false;
22 DataSet result = excelReader.AsDataSet();
23 for (int i = 1; i < result.Tables["Sheet1"].Rows.Count; i++)
24 {
25 string strUrl = Convert.ToString(result.Tables["Sheet1"].Rows[i][0]);
26
27 string strName = result.Tables["Sheet1"].Rows[i][1].ToString();
28
29 ///Andeliya/AwardWeb/index?id=1
30 string href = strUrl;
31 string empleename = strName;//id; //strUrl.Remove(0, 38);
32 var codeParams = CodeDescriptor.Init("M", href, "Zero", "12");
33 if (codeParams == null || !codeParams.TryEncode())
34 {
35 Response.StatusCode = (int)HttpStatusCode.BadRequest;
36 Response.Write("参数不能为空!");
37 }
38 // Render the QR code as an image
39 System.GC.Collect();
40 using (var ms = new MemoryStream())
41 {
42 codeParams.Render(ms);
43 #region 保存到本地
44 System.IO.MemoryStream msd = new System.IO.MemoryStream(ms.GetBuffer());
45 System.Drawing.Image img = System.Drawing.Image.FromStream(msd);
46 var temp = string.Format(Server.MapPath("~/res/2017101811/"));
47 if (!Directory.Exists(temp)) { Directory.CreateDirectory(temp); }
48 string path = temp + "/" + empleename + ".png";//保存到本地
49 img.Save(path);//随机名
50 //return Controller.File(path, "application/msword", empleename + "的二维码" + DateTime.Now.ToString("yyMMddhhmmss") + ".png");//输出到浏览器
51 #endregion
52 }
53 Response.Write(empleename + "二维码生成成功");
54 Response.Write("<br/>");
55 }
56 Response.Write("二维码生成成功!");
57 }
58 /// <summary>
59 ///
60 /// </summary>
61 internal class CodeDescriptor
62 {
63 public ErrorCorrectionLevel Ecl;
64 public string Content;
65 public QuietZoneModules QuietZones;
66 public int ModuleSize;
67 public BitMatrix Matrix;
68 public string ContentType;
69 /// <summary>
70 /// Parse QueryString that define the QR code properties
71 /// </summary>
72 /// <param name="request">HttpRequest containing HTTP GET data</param>
73 /// <returns>A QR code descriptor object</returns>
74 public static CodeDescriptor Init(string e, string t, string q, string s)
75 {
76 var cp = new CodeDescriptor();
77 // Error correction level
78 if (!Enum.TryParse(e, out cp.Ecl))
79 cp.Ecl = ErrorCorrectionLevel.L;
80 // Code content to encode
81 cp.Content = t;
82 // Size of the quiet zone
83 if (!Enum.TryParse(q, out cp.QuietZones))
84 cp.QuietZones = QuietZoneModules.Two;
85 // Module size
86 if (!int.TryParse(s, out cp.ModuleSize))
87 cp.ModuleSize = 12;
88 return cp;
89 }
90 /// <summary>
91 /// Encode the content with desired parameters and save the generated Matrix
92 /// </summary>
93 /// <returns>True if the encoding succeeded, false if the content is empty or too large to fit in a QR code</returns>
94 public bool TryEncode()
95 {
96 var encoder = new QrEncoder(Ecl);
97 QrCode qr;
98 if (!encoder.TryEncode(Content, out qr))
99 return false;
100
101 Matrix = qr.Matrix;
102 return true;
103 }
104 /// <summary>
105 /// Render the Matrix as a PNG image
106 /// </summary>
107 /// <param name="ms">MemoryStream to store the image bytes into</param>
108 internal void Render(MemoryStream ms)
109 {
110 var render = new GraphicsRenderer(new FixedModuleSize(ModuleSize, QuietZones));
111 render.WriteToStream(Matrix, ImageFormat.Png, ms);
112 ContentType = "image/png";
113 }
114 }