① asp.net的问题,怎样导入word文件中的试题数据到数据库
前台:
<div style="text-align:center;">
上传试题所属类型:
<asp:DropDownList ID="ddlques_type" runat="server" Height="23px" Width="148px">
</asp:DropDownList><br/>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="btnShangChuan" runat="server" Text="开始上传Word数据"
onclick="btnShangChuan_Click" Width="131px"/>
<asp:Label ID="lblText" runat="server" Text="*" ForeColor="#FF3300"></asp:Label>
注意:上传文件后缀名为.doc或.docx的Word文件
</div>
后台:
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Word;
if (this.FileUpload1.FileName.Trim() == "")
{
this.lblText.Text = "请选择要上传Word文件!";
return;
}
//筛选合法文件
string fileName = this.FileUpload1.FileName;
string fileType = ".doc,.docx";
int dian = fileName.LastIndexOf('.');
string exten = fileName.Substring(dian);//得到后缀名
int IsHas = fileType.IndexOf(exten);//根据后缀名查找对比
if (IsHas == -1)//没有找到对应的后缀名称时
{
this.lblText.Text = "不允许上传非法图片!";
this.FileUpload1.Focus();
return;
}
else
{
object oMissing = System.Reflection.Missing.Value;
//打开文档
Microsoft.Office.Interop.Word._Application oWord = null;
Microsoft.Office.Interop.Word._Document oDoc = null;//记录word打开的文档
oWord = new Microsoft.Office.Interop.Word.Application();
oWord.Visible = false;
//得到绝对的路径
//string path = this.FileUpload1.PostedFile.FileName;//IE问题,现只有IE6能得到全路径
object path = @"E:\" + FileUpload1.FileName; //暂时取的死路径
//打开文档
oDoc = oWord.Documents.Open(ref path,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
object unknow = Type.Missing;
object saveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdPromptToSaveChanges;
OnlineExam exam = null;
List<OnlineExam> list = new List<OnlineExam>();
for (int i = 1; i < oDoc.Paragraphs.Count; i++)
{
if (i == 1 || i % 6 == 1)//题目
{
exam = new OnlineExam();
exam.Content = Convert.ToString(oDoc.Paragraphs[i].Range.Text.Trim());
}
if (i == 2 || i % 6 == 2)//答案A
{
exam.Ques_key_a = Convert.ToString(oDoc.Paragraphs[i].Range.Text.Trim().Replace("A.",""));
}
if (i == 3 || i % 6 == 3)//答案B
{
exam.Ques_key_b = Convert.ToString(oDoc.Paragraphs[i].Range.Text.Trim().Replace("B.", ""));
}
if (i == 4 || i % 6 == 4)//答案C
{
exam.Ques_key_c = Convert.ToString(oDoc.Paragraphs[i].Range.Text.Trim().Replace("C.", ""));
}
if (i == 5 || i % 6 == 5)//答案D
{
exam.Ques_key_d = Convert.ToString(oDoc.Paragraphs[i].Range.Text.Trim().Replace("D.", ""));
}
if (i == 6 || i % 6 == 0)//正确答案
{
string correctKey = Convert.ToString(oDoc.Paragraphs[i].Range.Text.Trim());
int indexof = correctKey.IndexOf(":");
if (indexof < 0)
{
//关闭word文档
oWord.ActiveDocument.Close(ref saveChanges, ref unknow, ref unknow);
//关闭word程序
oWord.Quit(ref saveChanges, ref unknow, ref unknow);
this.lblText.Text = "第" + i/6 + "题附近,试题文档标准格式有误,请检查!";
return;
}
string correctKey2 = correctKey.Substring(indexof + 1, correctKey.Length - (indexof + 1));
exam.Ques_correctKey = correctKey2;
if (correctKey2.Split(',').Length > 1)
{
exam.Ques_check_type = 1;//多选
}
else
{
exam.Ques_check_type = 0;//单选
}
list.Add(exam);
}
}
if (list.Count > 0)
{
questions_info questions = null;
for (int i = 0; i < list.Count; i++)
{
questions = new questions_info();
questions.ques_typeId = Convert.ToInt32(ddlques_type.SelectedValue);
questions.ques_check_type = Convert.ToInt32(list[i].Ques_check_type);
questions.ques_registTime = DateTime.Now;
questions.content = list[i].Content;
questions.ques_key_a = list[i].Ques_key_a;
questions.ques_key_b = list[i].Ques_key_b;
questions.ques_key_c = list[i].Ques_key_c;
questions.ques_key_d = list[i].Ques_key_d;
questions.ques_correctKey = list[i].Ques_correctKey;
examManageBll.InsertIntoQuestions(questions);
}
this.lblText.Text = "上传成功!";
}
if (list.Count == 0)
{
this.lblText.Text = "文档格式标准有误,请检查!";
}
//关闭word文档
oWord.ActiveDocument.Close(ref saveChanges, ref unknow, ref unknow);
//关闭word程序
oWord.Quit(ref saveChanges, ref unknow, ref unknow);
}
//文档是一行一行读的,不清楚还有没有更好的方法
② 我用excel编写的试题,怎么把它变成数据库,方便查询试题和编写试卷呢
如果您使用的是Access数据库:
打开Access>新建空白数据库(或已有的数据库)>外部数据>Excel>选择excel编写的试题文件>确定
如果您使用的是sql Server:
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:/book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
注:将"c:/book1.xls"替换为excel编写的试题文件名;
将Sheet1替换为excel编写的试题文件的表单名.
③ 如何批量把试题导入数据库(access)
http://www.binghebbs.cn/thread-12274-1-1.html
给个连接你 上面写的非常的详细。
这个是方法2 也是那个地址上的 方法有图片 你还是自己上去看把。
用 Schema.ini 文件也可以达到要求。
作用:Schema.ini用于提供文本文件中记录的构架信息。每个 Schema.ini 项都用于指定表的五个特征之一:
1、文本文件名
2、文件格式
3、字段名、字段长度、字段类型
4、字符集
5、特别数据类型转换
指定文件名
文件名要用方括号括起来,例如如果要对 Sample.txt 使用数据构架信息文件,那么它的对应的项应该是
[Sample.txt]
指定文件格式
格式说明
[/td]
[td=1,1,50%]
表格式
[/td]
[td=1,1,35%]
Schema.ini 格式描述
Tab 制表符分隔 文件中的字段用制表符分隔 Format=TabDelimited
CSV 分隔 文件中的字段用逗号来分隔 Format=CSVDelimited
自定义分隔 文件中的字段可以用任何字符来分隔,所有的字符都可以用来分隔,包括空格,但是双引号 ( " ) 除外 Format=Delimited(自定义分隔符)
- 或者没有分隔符 -
Format=Delimited( )
固定宽度 文件中的字段为固定长度 cg1留言,经测试,参数为:Format=FixedLength
指定字段
你可以有两种方法在一个字符分隔的文本文件中指定字段名
1、在文本文件中的第一行包含字段名,并且设置 ColNameHeader 为 True 。
2、用数字编号指定每一列并且指定每一列的名字以及数据类型
你必须用数字编号指定每一列并且指定每一列的名字、数据类型以及长度(在固定长度分隔的文本文件中需要指定长度)
注意,设定了 ColNameHeader 选项,在 Schema.ini 中 Windows 注册时会忽略 FirstRowHasNames 选项。
你也可以指定字段的数据类型,使用 MaxScanRows 选项用来指定在确定列的数据类型时要扫描多少行数据。设置 MaxScanRows 为 0 将扫描整个文件。
如果文本文件第一行包含字段名,并且要扫描整个文件,改项目就要定义如下:
ColNameHeader=True
MaxScanRows=0
接下来的项目用来指定表中的字段,使用列编号(Coln)选项来指定列。字段长度在“固定分隔文本文件中”是必填项目,在“字符分隔文本文件”中是可选项目。
示例:定义 2 个字段,CustomerNumber 是长度为 10 的文本字段、CustomerName 是长度为 30 的文本字段。
Col1=CustomerNumber Text Width 10
Col2=CustomerName Text Width 30
语法如下:
Coln=ColumnName type [Width #]
参数解释如下:
参数 说明
ColumnName 文本,标识字段名,如果包含空格要用双引号括起来
type 数据类型包括:
Microsoft Jet 数据类型:Bit Byte Short Long Currency Single Double DateTime Text Memo
ODBC 数据类型: Char (same as Text) Float (same as Double) Integer (same as Short) LongChar (same as Memo) Date date format
其中date format 是日期的格式字符串例如:Date YYYY-MM-DD
Width 字符串的长度,后面的数字用来指定字段的长度(“固定分隔文本文件”为必填,“文字分隔文本文件”为可选)
# 整形数字,标识字段长度
指定字符集
CharacterSet 项有两个选择:ANSI | OEM
选择 ANSI 字符集用如下方法:
CharacterSet=ANSI
④ Word试题导入数据库,用C#语言,谢谢各位
WORD没试过TXT的倒是试过
不是因为你用WORD导入数据库的话导出的时候会有问题
⑤ 在线考试系统题库怎么导入数据库
请件下方图片,3步走,可以完成试题的导入。
⑥ web 在线考试系统的生成试卷的模板在哪儿弄啊还有怎么将试题导入到mysql中,谢谢
可以将试卷内容构造成一个xml文件,或者是文本文件格式当然是固定的最好,然后进行解析放到自己事先构造好的model里,然后将这个model构造出sql语句,写入即可。
至于模版嘛,可以到网上搜一些相关的在线考试系统,然后模拟做一个就行啦~
⑦ vb自动组卷系统 将word文档的试题导入到access数据库中形成试题库
先保存为文本文件,然后按向导指引的步骤导入即可。
⑧ asp+sqlserver做考试系统,题干与选项分为两个表,请问如何将excel试题导入到数据库!
题干一个表,字段是:题干ID,题目,答案ID
选项一个表,字段是:选项ID,选项内容,所属题目ID,
在做代码的时候,根据题干编号SELECT相应的选项进行显示
在验证答案是否正确时,根据所选答案的ID与题干上标识的ID是否一致进行判断
导入EXCEL时,如果你从后台直接导入EXCEL表,就要把题干和选项分开到两个SHEET中,并把数据按数据库的格式进行整理。
然后选择数据库,右键属性,导入数据,上面有选择数据源,选Microsoft excel那个,然后选择你的表格,下一步,最后选定你要导到这个表的数据的那个SHEET,指定导到哪个数据表中。就可以了。
不知道是不是这个意思。希望对你有帮助。
⑨ java 考试系统怎么导入试题
没有真正的做过,不过看别人写的,感觉能实现
http://blog.csdn.net/xiyushiyi/article/details/41519235
⑩ 怎样用C#写一个把大量选择题导入到数据库(SQL Server)表(字段ID,QuestionsID,A,B,C,D,Results )中
没什么好办法,一个个录
或者在excel中把一个题数据作成一行,和数据库的字段对应,然后导入或者复制粘贴