C# Excel导入
Posted 努力向上的小蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# Excel导入相关的知识,希望对你有一定的参考价值。
两张表导入到一个DataGrid里面(题目表和答案表)
前台代码
1 <asp:Content ID="Content1" ContentPlaceHolderID="cphToolBar" runat="server"> 2 <epoint:Button ID="btnImport" runat="server" Text="题库信息导入" /> 3 <span> 4 <span style="color: red;">模板下载:</span><a target="_blank" 5 href="题库模版.xls"><span style="color: blue;">点击下载文件</span> </a> 6 </span> 7 </asp:Content> 8 9 <asp:UpdatePanel runat="server" ID="UpdatePanel_Upload"> 10 <ContentTemplate> 11 <epoint:CuteWebUIUpload_NoBut ID="upload1" AllowFileList="xlsx;xls" runat="server" 12 MaxAttachCount="-1" MaxAttachCountOneTime="1" UseCustomSaveMethod="true" OnFileUploadCompleted_Custom="upload1_FileUploadCompleted_Custom" /> 13 </ContentTemplate> 14 </asp:UpdatePanel>
后台代码
1 /// <summary> 2 /// 导入 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="args"></param> 6 7 protected void upload1_FileUploadCompleted_Custom(object sender, EventArgsOperate.AttachEventArgs[] args) 8 { 9 if (!Directory.Exists(Server.MapPath(@"ImportExcel"))) 10 Directory.CreateDirectory(Server.MapPath(@"ImportExcel")); 11 string mark = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString(); 12 string oldfileName = args[0].FileName; 13 string documentType = oldfileName.Substring(oldfileName.LastIndexOf(\'.\'), oldfileName.Length - oldfileName.LastIndexOf(\'.\')); 14 string fileName = "Import_" + mark + documentType; 15 args[0].CuteArgs.CopyTo(Server.MapPath(@"ImportExcel\\") + fileName); 16 17 ReadExcel(Server.MapPath(@"ImportExcel\\") + fileName); 18 } 19 20 21 public void ReadExcel(string ExcelFile) 22 { 23 DataSet ds; 24 string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFile + ";" + "Extended Properties=\'Excel 12.0\';"; 25 OleDbConnection conn = new OleDbConnection(strConn); 26 DataTable dtExcelSchema = new DataTable(); 27 try 28 { 29 conn.Open(); 30 dtExcelSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 31 new object[] { null, null, null, "Table" });//获取需要上传的Excel的Sheet 32 conn.Close(); 33 } 34 catch 35 { 36 throw; 37 } 38 for (int k = 1; k <= dtExcelSchema.Rows.Count; k++) 39 { 40 try 41 { 42 ds = new DataSet(); 43 OleDbDataAdapter oada = new OleDbDataAdapter("select * from [Sheet" + k + "$]", strConn); 44 oada.Fill(ds); 45 } 46 catch 47 { 48 throw; 49 } 50 51 DataTable dt = ds.Tables[0]; 52 if (dt.Rows.Count > 0) 53 { 54 55 for (int i = 0; i < dt.Rows.Count; i++) 56 { 57 M_Exam_Subject m_es = new M_Exam_Subject(); 58 M_Exam_Answer m_ea = new M_Exam_Answer(); 59 #region 插入题目 60 m_es.SubjectGuid = NewSubjectGuid(); 61 m_es.Title = Convert.ToString(dt.Rows[i][0]);//题目名称 62 string type = Convert.ToString(dt.Rows[i][1]);//题目类型 63 switch (type) 64 { 65 case "单选": m_es.Type = "0"; 66 break; 67 case "多选": m_es.Type = "1"; 68 break; 69 case "判断": m_es.Type = "2"; 70 break; 71 case "填空": m_es.Type = "3"; 72 break; 73 case "简答": m_es.Type = "4"; 74 break; 75 } 76 77 string difficult = Convert.ToString(dt.Rows[i][2]);//题目难度 78 switch (difficult) 79 { 80 case "简单": m_es.Difficult = 0; 81 break; 82 case "一般": m_es.Difficult = 1; 83 break; 84 case "难": m_es.Difficult = 2; 85 break; 86 } 87 m_es.AnswerNote = Convert.ToString(dt.Rows[i][21]);//答案解析 88 m_es.GroupID = Convert.ToInt32(ParentRowID); 89 b_examsubject.Insert(m_es); 90 #endregion 91 //插入主观题答案 92 if ((type == "填空") || (type == "简答")) 93 { 94 m_es.SubjectGuid = m_es.SubjectGuid; 95 m_es.RightAnswer = Convert.ToString(dt.Rows[i][19]);//正确答案 96 b_examsubject.Update(m_es); 97 } 98 //插入客观题答案 99 else 100 { 101 //for (int j = 3; j < 7; j++) 102 //{ 103 // m_ea.SubjectGuid = m_es.SubjectGuid; 104 // m_ea.AnswerGuid = Guid.NewGuid().ToString(); 105 // m_ea.AnswerName = Convert.ToString(dt.Rows[i][j]);//答案 106 // b_examanswer.Insert(m_ea); 107 //} 108 DataView dvRecord = dt.DefaultView; 109 string answerid1 = Guid.NewGuid().ToString(); 110 string answerid2 = Guid.NewGuid().ToString(); 111 string answerid3 = Guid.NewGuid().ToString(); 112 string answerid4 = Guid.NewGuid().ToString(); 113 string answerid5 = Guid.NewGuid().ToString(); 114 string answerid6 = Guid.NewGuid().ToString(); 115 if (Convert.ToString(dvRecord[i][3]) != "") 116 b_examanswer.InsertAnswer(answerid1, Convert.ToString(dvRecord[i][3]), false, m_es.SubjectGuid); 117 if (Convert.ToString(dvRecord[i][4]) != "") 118 b_examanswer.InsertAnswer(answerid2, Convert.ToString(dvRecord[i][4]), false, m_es.SubjectGuid); 119 if (Convert.ToString(dvRecord[i][5]) != "") 120 b_examanswer.InsertAnswer(answerid3, Convert.ToString(dvRecord[i][5]), false, m_es.SubjectGuid); 121 if (Convert.ToString(dvRecord[i][6]) != "") 122 b_examanswer.InsertAnswer(answerid4, Convert.ToString(dvRecord[i][6]), false, m_es.SubjectGuid); 123 if (Convert.ToString(dvRecord[i][7]) != "") 124 b_examanswer.InsertAnswer(answerid5, Convert.ToString(dvRecord[i][7]), false, m_es.SubjectGuid); 125 if (Convert.ToString(dvRecord[i][8]) != "") 126 b_examanswer.InsertAnswer(answerid6, Convert.ToString(dvRecord[i][8]), false, m_es.SubjectGuid); 127 128 //添加正确答案 129 int num = 0; 130 if (Convert.ToString(dvRecord[i][18]) != "") 131 { 132 string strright = Convert.ToString(dvRecord[i][18]).Trim(); 133 if (strright.IndexOf(\'A\') >= 0 || strright.IndexOf(\'a\') >= 0) 134 { 135 num++; 136 b_examanswer.UpdateAnswer_isRight(answerid1, true); 137 } 138 if (strright.IndexOf(\'B\') >= 0 || strright.IndexOf(\'b\') >= 0) 139 { 140 num++; 141 b_examanswer.UpdateAnswer_isRight(answerid2, true); 142 } 143 if (strright.IndexOf(\'C\') >= 0 || strright.IndexOf(\'c\') >= 0) 144 { 145 num++; 146 b_examanswer.UpdateAnswer_isRight(answerid3, true); 147 } 148 if (strright.IndexOf(\'D\') >= 0 || strright.IndexOf(\'d\') >= 0) 149 { 150 num++; 151 b_examanswer.UpdateAnswer_isRight(answerid4, true); 152 } 153 if (strright.IndexOf(\'E\') >= 0 || strright.IndexOf(\'e\') >= 0) 154 { 155 num++; 156 b_examanswer.UpdateAnswer_isRight(answerid5, true); 157 } 158 if (strright.IndexOf(\'F\') >= 0 || strright.IndexOf(\'f\') >= 0) 159 { 160 num++; 161 b_examanswer.UpdateAnswer_isRight(answerid6, true); 162 } 163 } 164 } 165 } 166 } 167 } 168 BindGrid(); 169 }
单表导入到一个DataGrid里面
后台代码
1 protected void InfoExport() 2 { 3 try 4 { 5 string ExcelName = this.CreateExcel(); 6 //将服务器上的Excel导出 7 // CuteWebUIOperate.DownloadFile(HttpContext.Current, Server.MapPath("ExcelExport/") + ExcelName, ExcelName, false); 8 string strScript = "window.open(\'ExcelExport/" + ExcelName + "\');"; 9 this.WriteAjaxMessage(strScript); 10 } 11 catch 12 { 13 throw; 14 } 15 } 16 17 18 19 protected string CreateExcel() //生成Excel 20 { 21 string Header = "报名信息"; 22 string strFileName = ""; 23 24 // 生成文件夹 25 string fileFolderPath = Server.MapPath("ExcelExport/"); 26 if (!System.IO.Directory.Exists(fileFolderPath)) 27 System.IO.Directory.CreateDirectory(fileFolderPath); 28 29 Workbook wb = new Workbook(); 30 31 wb.Worksheets.Add("Sheet1"); 32 33 Worksheet ws = wb.ActiveWorksheet; 34 //first row 19cell 35 WorksheetMergedCellsRegionCollection wm = ws.MergedCellsRegions; 36 37 WorksheetMergedCellsRegion wmc = wm.Add(0, 0, 0, 6);//起始位置和终止位置 38 wmc.Value = Header; 39 wmc.CellFormat.Alignment = HorizontalCellAlignment.Center; 40 wmc.CellFormat.Font.Bold = ExcelDefaultableBoolean.True; 41 wmc.CellFormat.BottomBorderColor = Color.Black; 42 wmc.CellFormat.LeftBorderColor = Color.Black; 43 wmc.CellFormat.RightBorderColor = Color.Black; 44 wmc.CellFormat.TopBorderColor = Color.Black; 45 46 wmc.CellFormat.BottomBorderStyle = CellBorderLineStyle.Thin; 47 wmc.CellFormat.LeftBorderStyle = CellBorderLineStyle.Thin; 48 wmc.CellFormat.RightBorderStyle = CellBorderLineStyle.Thin; 49 wmc.CellFormat.TopBorderStyle = CellBorderLineStyle.Thin; 50 wmc.CellFormat.WrapText = ExcelDefaultableBoolean.True; 51 wmc.CellFormat.Font.Name = "宋体"; 52 //字体大小 53 wmc.CellFormat.Font.Height = 300; 54 IWorksheetCellFormat HeadCellFormat = wb.CreateNewWorksheetCellFormat(); 55 HeadCellFormat.Alignment = HorizontalCellAlignment.Center; 56 HeadCellFormat.Font.Bold = ExcelDefaultableBoolean.True; 57 HeadCellFormat.Font.Name = "宋体"; 58 59 HeadCellFormat.BottomBorderColor = Color.Black; 60 HeadCellFormat.LeftBorderColor = Color.Black; 61 HeadCellFormat.RightBorderColor = Color.Black; 62 HeadCellFormat.TopBorderColor = Color.Black; 63 64 HeadCellFormat.BottomBorderStyle = CellBorderLineStyle.Thin; 65 HeadCellFormat.LeftBorderStyle = CellBorderLineStyle.Thin; 66 HeadCellFormat.RightBorderStyle = CellBorderLineStyle.Thin; 67 HeadCellFormat.TopBorderStyle = CellBorderLineStyle.Thin; 68 HeadCellFormat.WrapText = ExcelDefaultableBoolean.True; 69 70 IWorksheetCellFormat ItemCellFormat = wb.CreateNewWorksheetCellFormat(); 71 //CellFormat.Alignment = HorizontalCellAlignment.Center; 72 //CellFormat.Font.Bold = ExcelDefaultableBoolean.True; 73 ItemCellFormat.FillPattern = FillPatternStyle.Default; 74 ItemCellFormat.ShrinkToFit = ExcelDefaultableBoolean.True; 75 ItemCellFormat.BottomBorderColor = Color.Black; 76 ItemCellFormat.LeftBorderColor = Color.Black; 77 ItemCellFormat.RightBorderColor = Color.Black; 78 ItemCellFormat.TopBorderColor = Color.Black; 79 80 ItemCellFormat.BottomBorderStyle = CellBorderLineStyle.Thin; 81 ItemCellFormat.LeftBorderStyle = CellBorderLineStyle.Thin; 82 ItemCellFormat.RightBorderStyle = CellBorderLineStyle.Thin; 83 ItemCellFormat.TopBorderStyle = CellBorderLineStyle.Thin; 84 ItemCellFormat.WrapText = ExcelDefaultableBoolean.True; 85 ItemCellFormat.FormatString = "##,##0.00"; 86 ItemCellFormat.Font.Name = "宋体"; 87 int n; 88 n = 0; 89 wmc = wm.Add(1, n, 1, n++); 90 wmc.Value = "序号"; 91 wmc.CellFormat.SetFormatting(HeadCellFormat); 92 93 wmc = wm.Add(1, n, 1, n++); 94 wmc.Value = "姓名"; 95 wmc.CellFormat.SetFormatting(HeadCellFormat); 96 97 wmc = wm.Add(1, n, 1, n++); 98 wmc.Value = "身份证号"; 99 wmc.CellFormat.SetFormatting(HeadCellFormat); 100 101 wmc = wm.Add(1, n, 1, n++); 102 wmc.Value = "单位名称"; 103 wmc.CellFormat.SetFormatting(HeadCellFormat); 104 105 wmc = wm.Add(1, n, 1, n++); 106 wmc.Value = "计划名称"; 107 wmc.CellFormat.SetFormatting(HeadCellFormat); 108 109 wmc = wm.Add(1, n, 1, n++); 110 wmc.Value = "报名项"; 111 wmc.CellFormat.SetFormatting(HeadCellFormat); 112 113 wmc = wm.Add(1, n, 1, n++); 114 wmc.Value = "准考证号"; 115 wmc.CellFormat.SetFormatting(HeadCellFormat); 116 117 wmc = wm.Add(1, n, 1, n++); 118 wmc.Value = "成绩"; 119 wmc.CellFormat.SetFormatting(HeadCellFormat); 120 121 ws.Columns[n].Width = 500 * 15; 122 wmc = wm.Add(1, n, 1, n++); 123 wmc.Value = "以上是关于C# Excel导入的主要内容,如果未能解决你的问题,请参考以下文章
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中附源代码下载) 转