/// <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模板:
导入成功后的效果: