public List<T> ImportExe()
{
try
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Title = "Excel文件"; ofd.FileName = "";
ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
ofd.Filter = "所有文件(*.*)|*.*|Excel2003文件(*.xls)|*.xls|Excel2007文件(*.xlsx)|*.xlsx";
ofd.ValidateNames = true;
ofd.CheckFileExists = true;
ofd.CheckPathExists = true;
string file = string.Empty;
if (ofd.ShowDialog() == DialogResult.OK)
{ file = ofd.FileName; }
if (file == "")
{ XtraMessageBox.Show("没有选择Excel文件!无法进行数据导入"); }
else
{
List<string> dataList = new List<string>();
IWorkbook workbook;
string fileExt = Path.GetExtension(file).ToLower();
using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))
{
if (fileExt == ".xlsx")
{
workbook = new XSSFWorkbook(fs);
}
else if (fileExt == ".xls")
{
workbook = new HSSFWorkbook(fs);
}
else
{
workbook = null;
}
ISheet sheet = workbook.GetSheetAt(0);
int count = workbook.NumberOfSheets;
for (int z = 0; z < count; z++)
{
DataTable dt = new DataTable();
dt.TableName = sheet.SheetName;
sheet = workbook.GetSheetAt(z);
IRow header = sheet.GetRow(sheet.FirstRowNum);
if (header == null) continue;
List<int> columns = new List<int>();
for (int i = 0; i < header.LastCellNum; i++)
{
columns.Add(i);
ICell a = header.GetCell(i);
DataColumn dc = new DataColumn(a.ToString(), typeof(string));
dt.Columns.Add(dc);
}
for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum - 1; i++)
{
DataRow dr = dt.NewRow();
foreach (int j in columns)
{
if (sheet.GetRow(i) != null)
dr[j] = sheet.GetRow(i).GetCell(j);
}
dt.Rows.Add(dr);
}
List<T> list = ConvertViewModel(dt);
if (list == null)
{
XtraMessageBox.Show("没有导入的数据,请检查表格里的数据格式是否正确");
return null;
}
return list;
}
}
}
return null;
}
catch (Exception ex)
{
XtraMessageBox.Show($"{ex}");
return null;
}
}
public List<T> ConvertViewModel(DataTable dt)
{
List<T> items = new List<T>();
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["题型"] == null || dt.Rows[i]["题目内容"] == null || dt.Rows[i]["答案"] == null)
{
XtraMessageBox.Show("题型或者题目内容或者答案不能为空");
return null;
}
T item = new T();
item.answer = dt.Rows[i]["答案"].ToString().Trim();
item.option1 = dt.Rows[i]["选项1"].ToString().Trim();
item.option2 = dt.Rows[i]["选项2"].ToString().Trim();
item.option3 = dt.Rows[i]["选项3"].ToString().Trim();
item.option4 = dt.Rows[i]["选项4"].ToString().Trim();
item.option5 = dt.Rows[i]["选项5"].ToString().Trim();
item.question_content = dt.Rows[i]["题目内容"].ToString().Trim()?.Replace("_____","( )");
item.question_type = GetQuestiontype(dt.Rows[i]["题型"].ToString().Trim());
items.Add(item);
}
return items;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix