多张表数据导入到execl中
/// <summary>????
/// 操作課程報表模板 ???????
/// </summary> ???????
/// <param name="folder">文件夾路徑</param> ?
?/// <param name="filePath">文件路徑</param> ???????
/// <param name="templatePath">模板路徑</param> ???????
/// <param name="imgpath">圖片路徑</param> ???????
/// <param name="coursewareList">課件列表數據</param> ???????
/// <param name="parameterList">參數列表數據</param> ???????
/// <param name="equipmentList">設備列表數據</param> ???????
/// <returns></returns> ???????
public string OperateCourseExcelTemplate(string folder, string filePath, string templatePath, string imgpath, DataTable coursewareList, DataTable parameterList, DataTable equipmentList, DataTable lineList) ???????
{ ???????????
string langType = LangHelper.LangGet() == LangType.EN ? "EN" : "CN"; //判斷語言類型?????????? ????????? ???????????
try ???????????
{ ???????????????
File.Copy(templatePath, filePath); ???????????????
// 使用OleDb驅動程序連接到副本 ???????????????
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0;"); ???????????????
using (conn) ???????????????
{ ???????????????????
conn.Open(); ???????????????????
OleDbCommand cmd = null; ???????????????????
//課件列表 ??????????????????
? if (coursewareList.Rows.Count > 0) ???????????????????
{ ???????????????????????
for (int i = 0; i < coursewareList.Rows.Count; i++) ???????????????????????
{ ?????//區分中英文模板,'課件列表'是sheet名稱,后面的列名稱??(注意要跟模板名稱匹配)???????????????????????????????????????????????
if (langType == "CN") ???????????????????????????
{ ???????????????????????????????
cmd = new OleDbCommand("INSERT INTO [課件列表$]([課件名稱],[語言],[文件類型])" ??????????????????????????????
+ " VALUES(@LocalFileName, @Language, @FileType)", conn); ???????????????????????????
} ???????????????????????????
else ??????????????????????????
? { ???????????????????????????????
cmd = new OleDbCommand("INSERT INTO [InstructionList$]([InstructionName],[Language],[FileType])" ?????????????????????????????
+ " VALUES(@LocalFileName, @Language, @FileType)", conn); ???????????????????????????
} ???????????????????????????
cmd.Parameters.AddWithValue("@LocalFileName", coursewareList.Rows[i]["LocalFileName"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@Language", coursewareList.Rows[i]["Language"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@FileType", coursewareList.Rows[i]["FileType"].ToString()); ???????????????????????????
cmd.ExecuteNonQuery(); ???????????????????????
} ???????????????????
} ???????????????????
//參數列表 ???????????????????
if (parameterList.Rows.Count > 0) ???????????????????
{ ???????????????????????
for (int i = 0; i < parameterList.Rows.Count; i++) ???????????????????????
{ ???????????????????????????
if (langType == "CN") ???????????????????????????
{ ???????????????????????????????
cmd = new OleDbCommand("INSERT INTO [參數列表$]([實驗室名],[設備別名],[接口名],[端口名],[參數名],[參數值])" ??????????????????????????????
+ " VALUES(@ElabName,@DeviceTypeDisplayName,@InterfaceName,@PortName,@ParameterKey,@ParameterValue)", conn); ???????????????????????????
} ???????????????????????????
else ???????????????????????????
{ ???????????????????????????????
??cmd = new OleDbCommand("INSERT INTO [ParameterList$]([ElabName],[DisplayName],[InterfaceName],[PortName],[ParameterName],[ParameterValue])" ??????????????????????????????? + " VALUES(@ElabName,@DeviceTypeDisplayName,@InterfaceName,@PortName,@ParameterKey,@ParameterValue)", conn); ???????????????????????????
} ???????????????????????????
cmd.Parameters.AddWithValue("@ElabName", parameterList.Rows[i]["ElabName"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@DeviveTypeDisplayName", parameterList.Rows[i]["DeviceTypeDisplayName"].ToString()); ??????????????????????????
cmd.Parameters.AddWithValue("@InterfaceName", parameterList.Rows[i]["InterfaceName"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@PortName", parameterList.Rows[i]["PortName"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@ParameterKey", parameterList.Rows[i]["ParameterKey"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@ParameterValue", parameterList.Rows[i]["ParameterValue"].ToString()); ???????????????????????????
cmd.ExecuteNonQuery(); ???????????????????????
} ???????????????????
} ???????????????????
//設備列表 ???????????????????
if (equipmentList.Rows.Count > 0) ???????????????????
{ ???????????????????????
for (int i = 0; i < equipmentList.Rows.Count; i++) ???????????????????????
{ ???????????????????????????
if (langType == "CN") ???????????????????????????
{ ???????????????????????????????
cmd = new OleDbCommand("INSERT INTO [設備列表$]([實驗室名],[實驗設備名],[設備ID],[IP],[設備位置])" ??????????????????????????????
+ " VALUES(@ElabName,@DisplayName,@DeviceName,@IP,@Location)", conn); ???????????????????????????
} ??????????????????????????
? else ???????????????????????????
{ ???????????????????????????????
cmd = new OleDbCommand("INSERT INTO [DeviceList$]([ElabName],[DisplayName],[DeviceNameID],[IP],[Location])" ???????????????????????????????
+ " VALUES(@ElabName,@DisplayName,@DeviceName,@IP,@Location)", conn); ???????????????????????????
} ???????????????????????????
cmd.Parameters.AddWithValue("@ElabName", equipmentList.Rows[i]["ElabName"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@DisplayName", equipmentList.Rows[i]["DisplayName"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@DeviceName", equipmentList.Rows[i]["DeviceName"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@IP", equipmentList.Rows[i]["IP"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@Location", equipmentList.Rows[i]["Location"].ToString());???????????????????????????
cmd.ExecuteNonQuery(); ???????????????????????
} ???????????????????
} ???????????????????
//連線列表 ???????????????????
if (lineList.Rows.Count > 0) ???????????????????
{ ???????????????????????
for (int i = 0; i < lineList.Rows.Count; i++) ???????????????????????
{
?????? if (langType == "CN") ???????????????????????????
{ ???????????????????????????????
cmd = new OleDbCommand("INSERT INTO [連線列表$]([源端口],[目標端口],[類型])" ??????????????????????????????
+ " VALUES(@Srcs, @Targets, @Types)", conn); ???????????????????????????
} ???????????????????????????
else ???????????????????????????
{ ???????????????????????????????
cmd = new OleDbCommand("INSERT INTO [LineList$]([SourcePort],[TargetPort],[Type])" ??????????????????????????????
+ " VALUES(@Srcs, @Targets, @Types)", conn); ???????????????????????????
} ???????????????????????????
cmd.Parameters.AddWithValue("@Srcs", lineList.Rows[i]["Srcs"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@Targets", lineList.Rows[i]["Targets"].ToString()); ???????????????????????????
cmd.Parameters.AddWithValue("@Types", lineList.Rows[i]["Types"].ToString()); ???????????????????????????
cmd.ExecuteNonQuery(); ???????????????????????
}????????????????????
}
???????????????
} ??????????
? } ??????????
? catch (Exception ex) ??????????
? { ???????????????
LogHelper.Error("DataWriteExcelTemplate.OperateCourseExcelTemplate", ??????????????????????
string.Format(msg_Error, filePath, ex.Message)); ??????????????
? return null; ???????????
}
??????????? return filePath; ???????
}
中文execl模板:
英文execl模板:
導入成功后的效果:
?
轉載于:https://www.cnblogs.com/sunny0515/p/3285609.html
總結
以上是生活随笔為你收集整理的多张表数据导入到execl中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚拟主机的301重定向
- 下一篇: 蔬菜销售策划