当前位置:首页 » 数据仓库 » mvcexcel写入数据库
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mvcexcel写入数据库

发布时间: 2022-05-18 12:59:05

㈠ 新人求助,.NET MVC中如何利用npoi读取excel,导入数据库

这个的话,实际上就是先在服务器端生成该Excel文件,然后使用下载功能进行下载。下载方法不止一种,那么如何生成文件并返回该路径呢?实际上,还是流来实现的(包括生成PDF、TXT文档都是这样做的)。我一般的做法是,在服务器端生成临时文件,然后下载就可以了。具体部分代码如下:


varsavePath=Path.Combine(Path.GetTempPath(),fileName);
FileStreamfs=newFileStream(savePath,FileMode.Create);
workbook.Write(fs);
fs.Close();
returnsavePath;

这个是我从我项目中提取的部分代码,fileName就是文件名(传入的时候记得带后缀名.xls),workbook就是我们用NPOI创建的文档,写入fs流中。至于怎么用这个savePath,我的用法是在控制器要下载的地方加入如下代码:

if(isExport)
{
stringdate=DateTime.Now.ToChineseDate()+DateTime.Now.Hour+DateTime.Now.Minute+DateTime.Now.Second;
vardesFilePath=showList.ExportExcel("拖运记录输入查询资料"+date+".xls","拖运记录输入查询");
varurl=Url.Action("DownloadFile","Utils",new{@fullFilePath=desFilePath});
returnJson(new{success=true,url=url});
}

首先判断是不是下载,我通常将查询和下载做在一个控制器中,因为查询和下载很多地方可以共用。关键是desFilePath实质就是第一部分代码return savePath。而这个Url.Action这一部分就是另外一个单独的下载控制器,并把这个路径传过去,得到的url到客户端再执行。

前端使用Ajax即可。通用下载JS代码如下:

Application.exportHandler=function(form){
varlink=$(this);
varurl=link.attr('href');
$.post(url,form.serialize()+"&isExport=true")
.done(function(json){
json=json||{};
if(json.success){
$("body").append("<iframesrc='"+json.url+"'style='display:none;'></iframe>");
}elseif(json.errors){
Application.fancyAlert("汇出发生错误!");
}
})
.error(function(){
Application.fancyAlert("汇出发生错误!");
});
};

当点击下载的时候,就可以执行这段JS,Application是自定义的“类”,参数就是一个form(form不必我解释是什么吧)。控制器返回的url就是代码中的json.url。方法不止这一种,至于怎么下载文档,网上有很多,你可以自己去找找看。

㈡ 怎么使用Spring MVC 实现 Excel 2010 的文件读取 并将内容写入到数据库 谢谢各

本质是使用Java读取
具体的知识可以参考一下《Java报表开发技术深入解析》这本书
网上有电子版的

㈢ springMVC怎么把结果集写入Excel并导出

一、让不同类型数据用不同颜色显示
在工资表中,如果想让大于等于2000元的工资总额以“红色”显示,大于等于1500元的工资总额以“蓝色”显示,低于1000元的工资总额以“棕色”显示,其它以“黑色”显示,我们可以这样设置。
1.打开“工资表”工作簿,选中“工资总额”所在列,执行“格式→条件格式”命令,打开“条件格式”对话框。单击第二个方框右侧的下拉按钮,选中“大于或等于”选项,在后面的方框中输入数值“2000”。单击“格式”按钮,打开“单元格格式”对话框,将“字体”的“颜色”设置为“红色”。
2.按“添加”按钮,并仿照上面的操作设置好其它条件(大于等于1500,字体设置为“蓝色”;小于1000,字体设置为“棕色”)。
3.设置完成后,按下“确定”按钮。
看看工资表吧,工资总额的数据是不是按你的要求以不同颜色显示出来了。

二、建立分类下拉列表填充项
我们常常要将企业的名称输入到表格中,为了保持名称的一致性,利用“数据有效性”功能建了一个分类下拉列表填充项。
1.在Sheet2中,将企业名称按类别(如“工业企业”、“商业企业”、“个体企业”等)分别输入不同列中,建立一个企业名称数据库。
2.选中A列(“工业企业”名称所在列),在“名称”栏内,输入“工业企业”字符后,按“回车”键进行确认。
仿照上面的操作,将B、C……列分别命名为“商业企业”、“个体企业”……
3.切换到Sheet1中,选中需要输入“企业类别”的列(如C列),执行“数据→有效性”命令,打开“数据有效性”对话框。在“设置”标签中,单击“允许”右侧的下拉按钮,选中“序列”选项,在下面的“来源”方框中,输入“工业企业”,“商业企业”,“个体企业”……序列(各元素之间用英文逗号隔开),确定退出。
再选中需要输入企业名称的列(如D列),再打开“数据有效性”对话框,选中“序列”选项后,在“来源”方框中输入公式:=INDIRECT(C1),确定退出。
4.选中C列任意单元格(如C4),单击右侧下拉按钮,选择相应的“企业类别”填入单元格中。然后选中该单元格对应的D列单元格(如D4),单击下拉按钮,即可从相应类别的企业名称列表中选择需要的企业名称填入该单元格中。
提示:在以后打印报表时,如果不需要打印“企业类别”列,可以选中该列,右击鼠标,选“隐藏”选项,将该列隐藏起来即可。
三、建立“常用文档”新菜单
在菜单栏上新建一个“常用文档”菜单,将常用的工作簿文档添加到其中,方便随时调用。
1.在工具栏空白处右击鼠标,选“自定义”选项,打开“自定义”对话框。在“命令”标签中,选中“类别”下的“新菜单”项,再将“命令”下面的“新菜单”拖到菜单栏。
按“更改所选内容”按钮,在弹出菜单的“命名”框中输入一个名称(如“常用文档”)。
2.再在“类别”下面任选一项(如“插入”选项),在右边“命令”下面任选一项(如“超链接”选项),将它拖到新菜单(常用文档)中,并仿照上面的操作对它进行命名(如“工资表”等),建立第一个工作簿文档列表名称。
重复上面的操作,多添加几个文档列表名称。
3.选中“常用文档”菜单中某个菜单项(如“工资表”等),右击鼠标,在弹出的快捷菜单中,选“分配超链接→打开”选项,打开“分配超链接”对话框。通过按“查找范围”右侧的下拉按钮,定位到相应的工作簿(如“工资.xls”等)文件夹,并选中该工作簿文档。
重复上面的操作,将菜单项和与它对应的工作簿文档超链接起来。
4.以后需要打开“常用文档”菜单中的某个工作簿文档时,只要展开“常用文档”菜单,单击其中的相应选项即可。
提示:尽管我们将“超链接”选项拖到了“常用文档”菜单中,但并不影响“插入”菜单中“超链接”菜单项和“常用”工具栏上的“插入超链接”按钮的功能。
四、制作“专业符号”工具栏
在编辑专业表格时,常常需要输入一些特殊的专业符号,为了方便输入,我们可以制作一个属于自己的“专业符号”工具栏。
1.执行“工具→宏→录制新宏”命令,打开“录制新宏”对话框,输入宏名?如“fuhao1”?并将宏保存在“个人宏工作簿”中,然后“确定”开始录制。选中“录制宏”工具栏上的“相对引用”按钮,然后将需要的特殊符号输入到某个单元格中,再单击“录制宏”工具栏上的“停止”按钮,完成宏的录制。
仿照上面的操作,一一录制好其它特殊符号的输入“宏”。
2.打开“自定义”对话框,在“工具栏”标签中,单击“新建”按钮,弹出“新建工具栏”对话框,输入名称——“专业符号”,确定后,即在工作区中出现一个工具条。
切换到“命令”标签中,选中“类别”下面的“宏”,将“命令”下面的“自定义按钮”项拖到“专业符号”栏上(有多少个特殊符号就拖多少个按钮)。
3.选中其中一个“自定义按钮”,仿照第2个秘技的第1点对它们进行命名。
4.右击某个命名后的按钮,在随后弹出的快捷菜单中,选“指定宏”选项,打开“指定宏”对话框,选中相应的宏(如fuhao1等),确定退出。
重复此步操作,将按钮与相应的宏链接起来。
5.关闭“自定义”对话框,以后可以像使用普通工具栏一样,使用“专业符号”工具栏,向单元格中快速输入专业符号了。
五、用“视面管理器”保存多个打印页面
有的工作表,经常需要打印其中不同的区域,用“视面管理器”吧。
1.打开需要打印的工作表,用鼠标在不需要打印的行(或列)标上拖拉,选中它们再右击鼠标,在随后出现的快捷菜单中,选“隐藏”选项,将不需要打印的行(或列)隐藏起来。
2.执行“视图→视面管理器”命令,打开“视面管理器”对话框,单击“添加”按钮,弹出“添加视面”对话框,输入一个名称(如“上报表”)后,单击“确定”按钮。
3.将隐藏的行(或列)显示出来,并重复上述操作,“添加”好其它的打印视面。
4.以后需要打印某种表格时,打开“视面管理器”,选中需要打印的表格名称,单击“显示”按钮,工作表即刻按事先设定好的界面显示出来,简单设置、排版一下,按下工具栏上的“打印”按钮,一切就OK了。
六、让数据按需排序
如果你要将员工按其所在的部门进行排序,这些部门名称既的有关信息不是按拼音顺序,也不是按笔画顺序,怎么办?可采用自定义序列来排序。
1.执行“格式→选项”命令,打开“选项”对话框,进入“自定义序列”标签中,在“输入序列”下面的方框中输入部门排序的序列(如“机关,车队,一车间,二车间,三车间”等),单击“添加”和“确定”按钮退出。
2.选中“部门”列中任意一个单元格,执行“数据→排序”命令,打开“排序”对话框,单击“选项”按钮,弹出“排序选项”对话框,按其中的下拉按钮,选中刚才自定义的序列,按两次“确定”按钮返回,所有数据就按要求进行了排序。

七、把数据彻底隐藏起来
工作表部分单元格中的内容不想让浏览者查阅,只好将它隐藏起来了。
1.选中需要隐藏内容的单元格(区域),执行“格式→单元格”命令,打开“单元格格式”对话框,在“数字”标签的“分类”下面选中“自定义”选项,然后在右边“类型”下面的方框中输入“;;;”(三个英文状态下的分号)。
2.再切换到“保护”标签下,选中其中的“隐藏”选项,按“确定”按钮退出。
3.执行“工具→保护→保护工作表”命令,打开“保护工作表”对话框,设置好密码后,“确定”返回。
经过这样的设置以后,上述单元格中的内容不再显示出来,就是使用Excel的透明功能也不能让其现形。
提示:在“保护”标签下,请不要清除“锁定”前面复选框中的“∨”号,这样可以防止别人删除你隐藏起来的数据。
八、让中、英文输入法智能化地出现
在编辑表格时,有的单元格中要输入英文,有的单元格中要输入中文,反复切换输入法实在不方便,何不设置一下,让输入法智能化地调整呢?
选中需要输入中文的单元格区域,执行“数据→有效性”命令,打开“数据有效性”对话框,切换到“输入法模式”标签下,按“模式”右侧的下拉按钮,选中“打开”选项后,“确定”退出。
以后当选中需要输入中文的单元格区域中任意一个单元格时,中文输入法(输入法列表中的第1个中文输入法)自动打开,当选中其它单元格时,中文输入法自动关闭。
九、让“自动更正”输入统一的文本
你是不是经常为输入某些固定的文本,如《电脑报》而烦恼呢?那就往下看吧。
1.执行“工具→自动更正”命令,打开“自动更正”对话框。
2.在“替换”下面的方框中输入“pcw”(也可以是其他字符,“pcw”用小写),在“替换为”下面的方框中输入“《电脑报》”,再单击“添加”和“确定”按钮。
3.以后如果需要输入上述文本时,只要输入“pcw”字符?此时可以不考虑“pcw”的大小写?,然后确认一下就成了。
十、在Excel中自定义函数
Excel函数虽然丰富,但并不能满足我们的所有需要。我们可以自定义一个函数,来完成一些特定的运算。下面,我们就来自定义一个计算梯形面积的函数:
1.执行“工具→宏→Visual Basic编辑器”菜单命令(或按“Alt+F11”快捷键),打开Visual Basic编辑窗口。
2.在窗口中,执行“插入→模块”菜单命令,插入一个新的模块——模块1。
3.在右边的“代码窗口”中输入以下代码:
Function V(a,b,h)V = h*(a+b)/2End Function
4.关闭窗口,自定义函数完成。
以后可以像使用内置函数一样使用自定义函数。
提示:用上面方法自定义的函数通常只能在相应的工作簿中使用。
十一、表头下面衬张图片
为工作表添加的背景,是衬在整个工作表下面的,能不能只衬在表头下面呢?
1.执行“格式→工作表→背景”命令,打开“工作表背景”对话框,选中需要作为背景的图片后,按下“插入”按钮,将图片衬于整个工作表下面。
2.在按住Ctrl键的同时,用鼠标在不需要衬图片的单元格(区域)中拖拉,同时选中这些单元格(区域)。
3.按“格式”工具栏上的“填充颜色”右侧的下拉按钮,在随后出现的“调色板”中,选中“白色”。经过这样的设置以后,留下的单元格下面衬上了图片,而上述选中的单元格(区域)下面就没有衬图片了(其实,是图片被“白色”遮盖了)。
提示?衬在单元格下面的图片是不支持打印的。
十二、用连字符“&”来合并文本
如果我们想将多列的内容合并到一列中,不需要利用函数,一个小小的连字符“&”就能将它搞定(此处假定将B、C、D列合并到一列中)。
1.在D列后面插入两个空列(E、F列),然后在D1单元格中输入公式:=B1&C1&D1。
2.再次选中D1单元格,用“填充柄”将上述公式复制到D列下面的单元格中,B、C、D列的内容即被合并到E列对应的单元格中。
3.选中E列,执行“复制”操作,然后选中F列,执行“编辑→选择性粘贴”命令,打开“选择性粘贴”对话框,选中其中的“数值”选项,按下“确定”按钮,E列的内容(不是公式)即被复制到F列中。
4.将B、C、D、E列删除,完成合并工作。
提示:完成第1、2步的操作,合并效果已经实现,但此时如果删除B、C、D列,公式会出现错误。故须进行第3步操作,将公式转换为不变的“值”。

生成绩条
常有朋友问“如何打印成绩条”这样的问题,有不少人采取录制宏或VBA的方法来实现,这对于初学者来说有一定难度。出于此种考虑,我在这里给出一种用函数实现的简便方法。
此处假定学生成绩保存在Sheet1工作表的A1至G64单元格区域中,其中第1行为标题,第2行为学科名称。
1.切换到Sheet2工作表中,选中A1单元格,输入公式:=IF(MOD(ROW(),3)=0,″″,IF(0MOD?ROW(),3(=1,sheet1!Aū,INDEX(sheet1!$A:$G,INT(((ROW()+4)/3)+1),COLUMN())))。
2.再次选中A1单元格,用“填充柄”将上述公式复制到B1至G1单元格中;然后,再同时选中A1至G1单元格区域,用“填充柄”将上述公式复制到A2至G185单元格中。
至此,成绩条基本成型,下面简单修饰一下。
3.调整好行高和列宽后,同时选中A1至G2单元格区域(第1位学生的成绩条区域),按“格式”工具栏“边框”右侧的下拉按钮,在随后出现的边框列表中,选中“所有框线”选项,为选中的区域添加边框(如果不需要边框,可以不进行此步及下面的操作)。
4.同时选中A1至G3单元格区域,点击“常用”工具栏上的“格式刷”按钮,然后按住鼠标左键,自A4拖拉至G186单元格区域,为所有的成绩条添加边框。
按“打印”按钮,即可将成绩条打印出来。
十四、Excel帮你选函数
在用函数处理数据时,常常不知道使用什么函数比较合适。Excel的“搜索函数”功能可以帮你缩小范围,挑选出合适的函数。
执行“插入→函数”命令,打开“插入函数”对话框,在“搜索函数”下面的方框中输入要求(如“计数”),然后单击“转到”按钮,系统即刻将与“计数”有关的函数挑选出来,并显示在“选择函数”下面的列表框中。再结合查看相关的帮助文件,即可快速确定所需要的函数。
十五、同时查看不同工作表中多个单元格内的数据
有时,我们编辑某个工作表(Sheet1)时,需要查看其它工作表中(Sheet2、Sheet3……)某个单元格的内容,可以利用Excel的“监视窗口”功能来实现。
执行“视图→工具栏→监视窗口”命令,打开“监视窗口”,单击其中的“添加监视”按钮,展开“添加监视点”对话框,用鼠标选中需要查看的单元格后,再单击“添加”按钮。重复前述操作,添加其它“监视点”。
以后,无论在哪个工作表中,只要打开“监视窗口”,即可查看所有被监视点单元格内的数据和相关信息。
十六、为单元格快速画边框
在Excel 2002以前的版本中,为单元格区域添加边框的操作比较麻烦,Excel 2002对此功能进行了全新的拓展。
单击“格式”工具栏上“边框”右侧的下拉按钮,在随后弹出的下拉列表中,选“绘图边框”选项,或者执行“视图→工具栏→边框”命令,展开“边框”工具栏。
单击工具栏最左侧的下拉按钮,选中一种边框样式,然后在需要添加边框的单元格区域中拖拉,即可为相应的单元格区域快速画上边框。
提示:①如果画错了边框,没关系,选中工具栏上的“擦除边框”按钮,然后在错误的边框上拖拉一下,就可以清除掉错误的边框。②如果需要画出不同颜色的边框,可以先按工具栏右侧的“线条颜色”按钮,在随后弹出的调色板中选中需要的颜色后,再画边框即可。③这一功能还可以在单元格中画上对角的斜线。

十七、控制特定单元格输入文本的长度
你能想象当你在该输入四位数的单元格中却填入了一个两位数,或者在该输入文字的单元格中你却输入了数字的时候,Excel就能自动判断、即时分析并弹出警告,那该多好啊!要实现这一功能,对Excel来说,也并不难。
例如我们将光标定位到一个登记“年份”的单元格中,为了输入的统一和计算的方便,我们希望“年份”都用一个四位数来表示。所以,我们可以单击“数据”菜单的“有效性”选项。在“设置”卡片“有效性条件”的“允许”下拉菜单中选择“文本长度”。然后在“数据”下拉菜单中选择“等于”,且“长度”为“4”。同时,我们再来到“出错警告”卡片中,将“输入无效数据时显示的出错警告”设为“停止”,并在“标题”和“错误信息”栏中分别填入“输入文本非法!”和“请输入四位数年份。”字样。
很显然,当如果有人在该单元格中输入的不是一个四位数时,Excel就会弹出示的警告对话框,告诉你出错原因,并直到你输入了正确“样式”的数值后方可继续录入。神奇吧?其实,在Excel的“数据有效性”判断中,还有许多特殊类型的数据格式可选,比如“文本类型”啊,“序列大小”啊,“时间远近”啊,如你有兴趣,何不自作主张,自己设计一种检测标准,让你的Excel展示出与众不同的光彩呢。
十八、成组填充多张表格的固定单元格
我们知道每次打开Excel,软件总是默认打开多张工作表。由此就可看出Excel除了拥有强大的单张表格的处理能力,更适合在多张相互关联的表格中协调工作。要协调关联,当然首先就需要同步输入。因此,在很多情况下,都会需要同时在多张表格的相同单元格中输入同样的内容。
那么如何对表格进行成组编辑呢?首先我们单击第一个工作表的标签名“Sheet1”,然后按住Shift键,单击最后一张表格的标签名“Sheet3”(如果我们想关联的表格不在一起,可以按住Ctrl键进行点选)。此时,我们看到Excel的标题栏上的名称出现了“工作组”字样,我们就可以进行对工作组的编辑工作了。在需要一次输入多张表格内容的单元格中随便写点什么,我们发现,“工作组”中所有表格的同一位置都显示出相应内容了。
但是,仅仅同步输入是远远不够的。比如,我们需要将多张表格中相同位置的数据统一改变格式该怎么办呢?首先,我们得改变第一张表格的数据格式,再单击“编辑”菜单的“填充”选项,然后在其子菜单中选择“至同组工作表”。这时,Excel会弹出“填充成组工作表”的对话框,在这里我们选择“格式”一项,点“确定”后,同组中所有表格该位置的数据格式都改变了。
十九、改变文本的大小写
在Excel中,为表格处理和数据运算提供最强大支持的不是公式,也不是数据库,而是函数。不要以为Excel中的函数只是针对数字,其实只要是写进表格中的内容,Excel都有对它编辑的特殊函数。例如改变文本的大小写。
在Excel 2002中,至少提供了三种有关文本大小写转换的函数。它们分别是:“=UPPER(源数据格)”,将文本全部转换为大写;“=LOWER(源数据格)”,将文本全部转换成小写;“=PROPER(源数据格)”,将文本转换成“适当”的大小写,如让每个单词的首字母为大写等。例如,我们在一张表格的A1单元格中输入小写的“excel”,然后在目标单元格中输入“=UPPER(A1)”,回车后得到的结果将会是“EXCEL”。同样,如果我们在A3单元格中输入“mr.weiwei”,然后我们在目标单元格中输入“=PROPER(A3)”,那么我们得到的结果就将是“Mr.Weiwei”了。
二十、提取字符串中的特定字符
除了直接输入外,从已存在的单元格内容中提取特定字符输入,绝对是一种省时又省事的方法,特别是对一些样式雷同的信息更是如此,比如员工名单、籍贯等信息。
如果我们想快速从A4单元格中提取称谓的话,最好使用“=RIGHT(源数据格,提取的字符数)”函数,它表示“从A4单元格最右侧的字符开始提取2个字符”输入到此位置。当然,如果你想提取姓名的话,则要使用“=LEFT(源数据格,提取的字符数)”函数了。还有一种情况,我们不从左右两端开始,而是直接从数据中间提取几个字符。比如我们要想从A5单元格中提取“武汉”两个字时,就只须在目标单元格中输入“=MID(A5,4,2)”就可以了。意思是:在A5单元格中提取第4个字符后的两个字符,也就是第4和第5两个字。

二十一、把基数词转换成序数词将英文的基数词转换成序数词是一个比较复杂的问题。因为它没有一个十分固定的模式:大多数的数字在变成序数词都是使用的“th”后缀,但大凡是以“1”、“2”、“3”结尾的数字却分别是以“st”、“nd”和“rd”结尾的。而且,“11”、“12”、“13”这3个数字又不一样,它们却仍然是以“th”结尾的。因此,实现起来似乎很复杂。其实,只要我们理清思路,找准函数,只须编写一个公式,就可轻松转换了。不信,请看:“=A2&IF(OR(VALUE(RIGHT(A2,2))={11,12,13}),″th″,IF(OR(VALUE(RIGHT(A2))={1,2,3,},CHOOSE(RIGHT(A2),″st″,″nd″,″rd″),″th″))”。该公式尽管一长串,不过含义却很明确:①如果数字是以“11”、“12”、“13”结尾的,则加上“th”后缀;②如果第1原则无效,则检查最后一个数字,以“1”结尾使用“st”、以“2”结尾使用“nd”、以“3”结尾使用“rd”;③如果第1、2原则都无效,那么就用“th”。因此,基数词和序数词的转换实现得如此轻松和快捷。
二十二、用特殊符号补齐位数
和财务打过交道的人都知道,在账面填充时有一种约定俗成的“安全填写法”,那就是将金额中的空位补齐,或者在款项数据的前面加上“$”之类的符号。其实,在Excel中也有类似的输入方法,那就是“REPT”函数。它的基本格式是“=REPT(“特殊符号”,填充位数)”。
比如,我们要在中A2单元格里的数字结尾处用“#”号填充至16位,就只须将公式改为“=(A2&REPT(″#″,16-LEN(A2)))”即可;如果我们要将A3单元格中的数字从左侧用“#”号填充至16位,就要改为“=REPT(″#″,16-LEN(A3)))&A3”;另外,如果我们想用“#”号将A4中的数值从两侧填充,则需要改为“=REPT(″#″,8-LEN(A4)/2)&A4&REPT(″#″)8-LEN(A4)/2)”;如果你还嫌不够专业,要在A5单元格数字的顶头加上“$”符号的话,那就改为:“=(TEXT(A5,″$#,##0.00″(&REPT(″#″,16-LEN(TEXT(A5,″$#,##0.00″))))”,一定能满足你的要求。
二十三、创建文本直方图
除了重复输入之外,“REPT”函数另一项衍生应用就是可以直接在工作表中创建由纯文本组成的直方图。它的原理也很简单,就是利用特殊符号的智能重复,按照指定单元格中的计算结果表现出长短不一的比较效果。
比如我们首先制作一张年度收支平衡表,然后将“E列”作为直方图中“预算内”月份的显示区,将“G列”则作为直方图中“超预算”的显示区。然后根据表中已有结果“D列”的数值,用“Wingdings”字体的“N”字符表现出来。具体步骤如下:
在E3单元格中写入公式“=IF(D30,REPT(″n″,ROUND(D3*100,0)),″″)”,也拖动填充柄至G14。我们看到,一个没有动用Excel图表功能的纯文本直方图已展现眼前,方便直观,简单明了。
二十四、计算单元格中的总字数
有时候,我们可能对某个单元格中字符的数量感兴趣,需要计算单元格中的总字数。要解决这个问题,除了利用到“SUBSTITUTE”函数的虚拟计算外,还要动用“TRIM”函数来删除空格。比如现在A1单元格中输入有“how many words?”字样,那么我们就可以用如下的表达式来帮忙:
“=IF(LEN(A1)=0,0,LEN(TRIM(A1))-LEN(SUBSTITUTE(TRIM(A1),″,″,″″))+1)”
该式的含义是先用“SUBSTITUTE”函数创建一个新字符串,并且利用“TRIM”函数删除其中字符间的空格,然后计算此字符串和原字符串的数位差,从而得出“空格”的数量,最后将空格数+1,就得出单元格中字符的数量了。
二十五、关于欧元的转换
这是Excel 2002中的新工具。如果你在安装Excel 2002时选择的是默认方式,那么很可能不能在“工具”菜单中找到它。不过,我们可以先选择“工具”菜单中的“加载宏”,然后在弹出窗口中勾选“欧元工具”选项,“确定”后Excel 2002就会自行安装了。
完成后我们再次打开“工具”菜单,单击“欧元转换”,一个独立的专门用于欧元和欧盟成员国货币转换的窗口就出现了。与Excel的其他函数窗口一样,我们可以通过鼠标设置货币转换的“源区域”和“目标区域”,然后再选择转换前后的不同币种即可。所示的就是“100欧元”分别转换成欧盟成员国其他货币的比价一览表。当然,为了使欧元的显示更显专业,我们还可以点击Excel工具栏上的“欧元”按钮,这样所有转换后的货币数值都是欧元的样式了。

㈣ mvc c#导入Excel表格数据到数据库,并显示在页面

上头说的很明白了 类型定义错误

㈤ 在mvc中怎么把数据导入excel中

你的mvc描述的概念太广泛了,你要告诉大家,你用的什么语言什么框架,不然给你源码你也用不了啊。
具体流程,无非是三步:
1 读取execel文件内容。高级语言,都会有对应的组件做支持的,
2 见execl内容转化为POJO(简单数据对象)
3 将POJO通过ORM框架。或者自己写sql插入数据库

㈥ easyui + SpringMvc 上传excel到服务器,然后解析插入mysql数据库

直接把#换成“?”即可,表示当前的页面,如果有其他参数应该写成“?&id=...”

㈦ 用Springmvc上传excel表格并导入数据库怎么写

可以参考一下下面的例子:

http://blog.csdn.net/jinwufeiyang/article/details/52216218

㈧ asp.net MVC3 excel导入到sql server,怎么写求代码!!

Excel数据导入到数据库, 可以分两个步骤:第一步,先将Excel的数据读取到DataSet。第二步,将DataSet中的数据逐条写入数据库。 这里我给你一个将Excel数据读取到DataSet的方法:先引用:using System.Data.OleDb;//读取Excel数据到DataSetpublic DataSet ImportToDS(string fileName){ string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0"; OleDbConnection connOleDb = new OleDbConnection(strConn); DataSet ds = new DataSet(); OleDbDataAdapter da = new OleDbDataAdapter("select * from [Sheet1$]", connOleDb); da.Fill(ds); return ds;}得到数据的DataSet很容易就写入数据库了。 以上信息希望对你有帮助。。^^

㈨ springmvc excel表格数据导入数据库怎么做

一) 其实这个功能在spring2.x时代就提供了。一直没用过,今天在spring-mvc3.2.x的环境下试验了一次。还算简单易用。
二) 依赖。
spring依赖POI或jExcel来实现对excel输出的支持,前者是apache出品,貌似名气更大,本例使用第一个。

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi</artifactId>

<version>3.7</version>

</dependency>

三) spring提供了一个AbstractExcelView作为自己实现的视图的父类。实例代码如下。

packageying.car.view;

importjava.text.DateFormat;

importjava.text.SimpleDateFormat;

importjava.util.List;

importjava.util.Map;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importorg.apache.poi.hssf.usermodel.HSSFDataFormat;

importorg.apache.poi.hssf.usermodel.HSSFSheet;

importorg.apache.poi.hssf.usermodel.HSSFWorkbook;

importorg.apache.poi.ss.usermodel.Cell;

importorg.apache.poi.ss.usermodel.CellStyle;

importorg.apache.poi.ss.usermodel.IndexedColors;

importorg.joda.time.DateTime;

importorg.slf4j.Logger;

importorg.slf4j.LoggerFactory;

importorg.springframework.web.servlet.view.document.AbstractExcelView;

importying.car.binding.DateRange;

importying.car.domain.RefuelingRecord;

{

=LoggerFactory.getLogger(RefuelingRecordExcelView.class);

_FORMAT=newSimpleDateFormat("yyyyMMdd");

@Override

@SuppressWarnings({"unchecked"})

(

Map<String,Object>model,//MVC中的M就在这里了

HSSFWorkbookworkbook,

HttpServletRequestrequest,

HttpServletResponseresponse)throwsException

{

("yyyy/MM/dd"));

LOGGER.debug("end:{}",newDateTime(dr.getEnd()).toString("yyyy/MM/dd"));

}

}

HSSFSheetsheet=workbook.createSheet(DATE_FORMAT.format(dr.getStart())+"-"+DATE_FORMAT.format(dr.getEnd()));

setColumnsWidth(sheet);

fillTableHeader(workbook,sheet);

fillTableBody(workbook,sheet,rrl);

}

privatevoidsetColumnsWidth(HSSFSheetsheet){

finalint[]warr=newint[]{

500,//<空>

4500,//日期

4500,//车辆

4500,//燃油种类

4500,//燃油单价

4500,//加油方式

4500,//加油量

3000,//花费

12000//备注

};

for(inti=0;i<warr.length;i++){

sheet.setColumnWidth(i,warr[i]);

}

}

//填充表格头

privatevoidfillTableHeader(HSSFWorkbookworkbook,HSSFSheetsheet){

finalString[]contents=newString[]{

"日期",

"车辆",

"燃油种类",

"燃油单价(元/升)",

"加油方式",

"加油量(升)",

"花费(元)",

"备注"

};

intr=1;

intc=1;

CellStylestyle=workbook.createCellStyle();

style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());//填充黄色

style.setFillPattern(CellStyle.SOLID_FOREGROUND);//填充方式

//设置border

style.setBorderLeft(CellStyle.BORDER_THIN);

style.setBorderRight(CellStyle.BORDER_THIN);

style.setBorderTop(CellStyle.BORDER_THIN);

style.setBorderBottom(CellStyle.BORDER_THIN);

for(inti=0;i<contents.length;i++){

Cellcell=getCell(sheet,r,c+i);

cell.setCellValue(contents[i]);

cell.setCellStyle(style);

}

}

privatevoidfillTableBody(HSSFWorkbookworkbook,HSSFSheetsheet,List<RefuelingRecord>records){

//通用style

CellStylestyle=workbook.createCellStyle();

style.setFillForegroundColor(IndexedColors.WHITE.getIndex());//填充白色

style.setFillPattern(CellStyle.SOLID_FOREGROUND);//填充方式

style.setBorderLeft(CellStyle.BORDER_THIN);

style.setBorderRight(CellStyle.BORDER_THIN);

style.setBorderTop(CellStyle.BORDER_THIN);

style.setBorderBottom(CellStyle.BORDER_THIN);

//日期style

CellStyledateStyle=workbook.createCellStyle();

dateStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());//填充白色

dateStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);//填充方式

dateStyle.setBorderLeft(CellStyle.BORDER_THIN);

dateStyle.setBorderRight(CellStyle.BORDER_THIN);

dateStyle.setBorderTop(CellStyle.BORDER_THIN);

dateStyle.setBorderBottom(CellStyle.BORDER_THIN);

dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));

intr=2;

intc=1;

Cellcell=null;

for(inti=0;i<records.size();i++){

RefuelingRecordrr=records.get(i);

//日期

cell=getCell(sheet,r,c+0);

if(rr.getDate()!=null)

cell.setCellValue(rr.getDate());

cell.setCellStyle(dateStyle);

//车辆

cell=getCell(sheet,r,c+1);

if(rr.getVehicle().getNickname()!=null)

cell.setCellValue(rr.getVehicle().getNickname());

cell.setCellStyle(style);

//燃油种类

cell=getCell(sheet,r,c+2);

if(rr.getGasType()!=null){

Strings=null;

switch(rr.getGasType()){

case_0:s="0号柴油";break;

case_93:s="93号汽油";break;

case_97:s="97号汽油";break;

case_98:s="98号汽油";break;

}

cell.setCellValue(s);

}

cell.setCellStyle(style);

//单价

cell=getCell(sheet,r,c+3);

if(rr.getPriceOfGas()!=null)

cell.setCellValue(rr.getPriceOfGas());

cell.setCellStyle(style);

//加油方式

cell=getCell(sheet,r,c+4);

if(rr.getRefuelingType()!=null){

Strings=null;

switch(rr.getRefuelingType()){

caseFIXED_CUBAGE:

s="固定容积";break;

caseFIXED_MONEY:

s="固定金额";break;

caseFULL:

s="加满";break;

}

cell.setCellValue(s);

}

cell.setCellStyle(style);

//加油量

cell=getCell(sheet,r,c+5);

if(rr.getCubageOfGas()!=null)

cell.setCellValue(rr.getCubageOfGas());

cell.setCellStyle(style);

//花费

cell=getCell(sheet,r,c+6);

if(rr.getSumOfMoney()!=null)

cell.setCellValue(rr.getSumOfMoney());

cell.setCellStyle(style);

//备注

cell=getCell(sheet,r,c+7);

if(rr.getComment()!=null)

cell.setCellValue(rr.getComment());

cell.setCellStyle(style);

r++;

}

}

}

cell.setCellStyle(style);

// 燃油种类
cell = getCell(sheet, r, c + 2);
if (rr.getGasType() != null) {
String s = null;
switch (rr.getGasType()) {
case _0: s = "0号柴油"; break;
case _93: s = "93号汽油"; break;
case _97: s = "97号汽油"; break;
case _98: s = "98号汽油"; break;
}
cell.setCellValue(s);
}
cell.setCellStyle(style);

// 单价
cell = getCell(sheet, r, c + 3);
if (rr.getPriceOfGas() != null)
cell.setCellValue(rr.getPriceOfGas());
cell.setCellStyle(style);

// 加油方式
cell = getCell(sheet, r, c + 4);
if (rr.getRefuelingType() != null) {
String s = null;
switch (rr.getRefuelingType()) {
case FIXED_CUBAGE:
s = "固定容积"; break;
case FIXED_MONEY:
s = "固定金额"; break;
case FULL:
s = "加满"; break;
}
cell.setCellValue(s);
}
cell.setCellStyle(style);

// 加油量
cell = getCell(sheet, r, c + 5);
if (rr.getCubageOfGas() != null)
cell.setCellValue(rr.getCubageOfGas());
cell.setCellStyle(style);

// 花费
cell = getCell(sheet, r, c + 6);
if (rr.getSumOfMoney() != null)
cell.setCellValue(rr.getSumOfMoney());
cell.setCellStyle(style);

// 备注
cell = getCell(sheet, r, c + 7);
if (rr.getComment() != null)
cell.setCellValue(rr.getComment());
cell.setCellStyle(style);

r ++;
}
}
}

四) Controller中返回逻辑视图名 (代码片段)

Java代码

@RequiresUser//安全框架用元注释

@RequiresRoles({"ROLE_USER"})

@RequestMapping(value="/list/excel",method=RequestMethod.GET)

publicStringlistByExcel(

@DateRangeFormat(pattern="yyyy-MM-dd")@RequestParam("dateRange")DateRangedateRange,

ModelMapmodelMap

)

{

}

//放入model

modelMap.put("dateRange",dateRange);

modelMap.put("refuelingRecordList",gasService.(currentUserId,dateRange));

return"refueling-record-list";//最终返回逻辑视图名

}

五) 为spring-mvc配置多个视图解析器。

<beanclass="org.springframework.web.servlet.view.XmlViewResolver">

<propertyname="order"value="1"/><!--order很重要-->

<propertyname="location"value="classpath:/META-INF/views.xml"/>

</bean>

<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">

<propertyname="order"value="9999"/>

<propertyname="viewClass"value="org.springframework.web.servlet.view.JstlView"/>

<propertyname="prefix"value="/WEB-INF/jsp/"/>

<propertyname="suffix"value=".jsp"/>

六) 效果图

㈩ mvc里如何上传excel然后将里面的数据导入到SQL数据库里

我只有asp.net的,c#也可以使用,但是没测试过java那些的。将Excel里面的数据导入到数据库中的原理就是将Excel里面的数据存储到一个dataTable中,然后将数据一行一行添加到数据库的表里。给你部分代码,相信你能够如此好学,应该能看懂,有些变量你自己研究是什么,不然全部给你打出来了,你就只会了。

SqlConnectioncon=newSqlConnection(ConfigurationManager.AppSettings["aa"].ToString());
con.Open();//数据库连接字符串
DataTabledtXls=newDataTable();
if(this.fudAdd.PostedFile.FileName.ToString().Trim()!=""&&this.fudAdd.PostedFile.FileName!=null)
{
stringfilePath=this.fudAdd.PostedFile.FileName.ToString().Trim();
FileInfofileTag=newFileInfo(fudAdd.PostedFile.FileName);
stringextendedName=fileTag.Extension;
if(extendedName.ToLower()!=".xls"&&extendedName.ToLower()!=".xlsx")
{
Response.Write("<script>alert('请选择一个Excel文件!');</script>");
return;
}
else
{
dtXls=ExcelToDataTable(filePath,extendedName);
if(dtXls==null||dtXls.Rows.Count<=0||dtXls.Columns[0].ToString()=="")
{
Response.Write("<script>alert('请你确认上传的Excel中有资料!');</script>");
return;
}
else
{
if(dtXls.Columns[0].ToString()!="手机号码"||dtXls.Columns[1].ToString()!="状态")
{
Response.Write("<script>alert('请确定Excel资料的格式为[手机号码][状态]!');</script>");
return;
}
else
{
if(dtXls.Rows[0][0].ToString()=="")
{
Response.Write("<script>alert('请确定Excel资料的格式为[手机号码][状态]!');</script>");
return;
}
else
{
stringresult=AddXlsData(dtXls,con);
string[]resultData=result.Split('-');
stringmsg="资料上传成功!共计"+resultData[0]+"条成功,"+resultData[1]+"条失败!";
Response.Write("<script>alert('"+msg+"');</script>");
logwrite.LogOpera(userid,"UnExistMobile_Mag.aspx","UnExistMobile_Mag.aspx.cs","成功上传一批空号");//记录log
BindData();
return;
}
}
}
}
con.Close();

//
#regionExcelToDataTable
///<summary>
///读取xls文件
///Addby
///</summary>
///<paramname="fileName"></param>
///<returns></returns>
(stringfileName,stringextendedName)
{
stringstrConn=string.Empty;
if(extendedName.ToLower()==".xls")
{
strConn="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+fileName+";ExtendedProperties='Excel8.0;HDR=Yes;IMEX=1';";
}
if(extendedName.ToLower()==".xlsx")
{
strConn="Provider=Microsoft.ACE.OLEDB.12.0;DataSource="+fileName+";ExtendedProperties='Excel12.0;HDR=YES'";
}
OleDbConnectionconn=newOleDbConnection(strConn);
conn.Open();
System.Data.DataTableschemaTable=conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
stringtableName=schemaTable.Rows[0][2].ToString().Trim();
stringstrExcel="";
OleDbDataAdaptermyCommand=null;
DataSetds=null;
strExcel="Select*From["+tableName+"]";
myCommand=newOleDbDataAdapter(strExcel,strConn);
ds=newDataSet();
myCommand.Fill(ds,tableName);
if(ds!=null)
{
System.Data.DataTabledt=ds.Tables[0];
returndt;
}
else
{
returnnull;
}
conn.Close();
ds.Dispose();
}
#endregion