Excel工作表中如何导入txt文件.docx
- 文档编号:3990135
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:13
- 大小:20.83KB
Excel工作表中如何导入txt文件.docx
《Excel工作表中如何导入txt文件.docx》由会员分享,可在线阅读,更多相关《Excel工作表中如何导入txt文件.docx(13页珍藏版)》请在冰豆网上搜索。
Excel工作表中如何导入txt文件
第一篇范文:
SQL将txt文件导入sql数据库
就一句sql代码搞定,导入sql2000的代码。
BULKINSERT表名FROM'F:
\你的文本文件.txt'WITH(FIELDTERMINATOR='以什么符号分割数据',
ROWTERMINATOR='以什么符号加\n结尾')--\n是回车的意思,就是回车前面是什么符号,如果没符号直接单引号\n
例如:
BULKINSERTbbFROM'F:
\2022-02-18.txt'WITH(FIELDTERMINATOR=',',ROWTERMINATOR=',\n')
bb是表名,f盘中的F:
\2022-02-18.txt文件,FIELDTERMINATOR=','每个数据是以逗号分隔的,
ROWTERMINATOR=',\n'每行数据以逗号回车结尾。
我导入过很多次。
使用BULKINSERT
用法如下:
stu.txt结构
1,Jim
2,Kate
3,Tom
...
BULKINSERTdbo.TABLE1
FROM'd:
\stu.txt'
WITH(
FIELDTERMINATOR=',',
ROWTERMINATOR='\n'
)
查看table1里的数据
select*fromtable1
就ok了。
在做一些web数据库管理系统的时候经常要实现将帐户批量注册的功能,今天就来讲讲如何在C#-web项目中将txt文件和excel文件导入SQL2000数据库。
1.数据库准备
在SQL2000数据库的实例数据库pubs中建立一个数据表txtInsert,字段很简单:
id,name两个。
2.txt文本文件导入
对于数据文件导入与导出SQL2000提供了BULKINSERT和BCP语句,在这里可以使用BULKINSERT命令实现。
假设在c盘上有一个文本文件stu.txt内容为:
1,tom
2,jack
3,jhon
实现导入的C#代码如下:
protectedSystem.Web.UI.HtmlControls.HtmlInputFilefName;
protectedSystem.Web.UI.WebControls.ButtonBtnInsert;
//上面两个控件自己添加
代码
privatevoidBtnInsert_Click(objectsender,System.EventArgse){
stringfPath=this.fName.PostedFile.FileName;//获得要导入的文本文件
stringextName=fPath.Substring(fPath.LastIndexOf(".")+1);//获得文件的扩展名
SqlConnectioncon=newSqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象
con.Open();
try
{
//其中的FIELDTERMINATOR=','指明字段间所使用的分隔符为逗号
//其中ROWTERMINATOR='\n'指明记录间所使用的分隔符为回车
Response.Write(" ')"); } catch(SqlExceptionSQLexc) { Response.Write("导入数据库时出错: "+SQLexc.ToString()); } con.Close(); } 好了,这个txt文件的导入相对简单,在数据库中我也没有设置主键,我在里面也没有加出错回滚事务操作,在下面的excel文件的导入中介绍。 3.excel文件的导入 在c盘里建立一个stu.xls文件,在sheet1工作表中有两列数据如下: 1tom 2jack 3john 注意,工作表的第一行是作为标题行的不会被插入到数据库中,真正导入从第二行开始。 为了演示事物出错回滚,在这里将txtInsert数据库表中的id字段设置为主键。 实现的C#代码如下: 代码 privatevoidBtnInsert_Click(objectsender,System.EventArgse){ stringfPath=this.fName.PostedFile.FileName;//获得要导入的文本文件 stringextName=fPath.Substring(fPath.LastIndexOf(".")+1);//获得文件的扩展名 SqlConnectioncon=newSqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象 con.Open(); //注意下面的连接字符串,是它起到了导入的作用 SqlTransactionmyTran=con.BeginTransaction();//开始一个事务操作excelCmd.Transaction=myTran; try { excelCmd.ExecuteNonQuery(); Response.Write(" ')"); } catch(SqlExceptionerr) { myTran.Rollback();//出错回滚事务操作 //以下三行是去掉数据库出错信息中的非法字符单引号、回车和换行符,否则在使用时javascript代码将有语法错误 //因为js的编码和c#的编码不同 stringerrString=err.Message.Replace("'",""); errString=errString.Replace(Convert.ToChar(13).ToString(),"");errString=errString.Replace(Convert.ToChar(10).ToString(),"");//显示出错信息框 Response.Write(" 详细信息: "+errString+"')"); } con.Close(); } 这里“显示出错信息框”开始我没有田间那三行代码,结果搞了半天,最后还是在html文件中发现javascript代码部分出现了分行,老是提示“未结束的字符串常量”,所以导致不能打开信息框,郁闷死我了,花了好多时间。 4.将excel中部分列导入数据库的方法 上面讲了关于将整个excel文件导入数据库的方法,那么在实际项目中遇到将excel文件中若干列导入数据库怎么办的呢,原理差不多,我就将代码直接给出了: 代码 stringfPath=this.fName.PostedFile.FileName;//获得要导入的文本文 件 stringextName=fPath.Substring(fPath.LastIndexOf(".")+1);//获得文件的扩展名 SqlConnectioncon=newSqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象 con.Open(); stringmystring="Provider=Microsoft.Jet.OLEDB.4.0;DataSource='"+fPath+"';ExtendedProperties=Excel8.0"; OleDbConnectioncnnxls=newOleDbConnection(mystring); OleDbDataAdaptermyDa=newOleDbDataAdapter("select*from[Sheet1$]",cnnxls); DataSetmyDs=newDataSet(); myDa.Fill(myDs); if(myDs.Tables[0].Rows.Count>0) { stringstrSql=""; stringCnnString="Provider=SQLOLEDB;database=pubs;server=.;uid=sa;pwd="; OleDbConnectionconn=newOleDbConnection(CnnString); conn.Open(); { strSql="insertintotxtInsert(id,name)values("; strSql+=myDs.Tables[0].Rows[i].ItemArray[0].ToString()+",'"; strSql+=myDs.Tables[0].Rows[i].ItemArray[1].ToString()+"')"; try { myCmd.ExecuteNonQuery (); Response.Write(" ')"); } catch(OleDbExceptionerr) { Response.Write("导入数据库时出错: "+err.ToString()); break; } } conn.Close(); 第二篇范文: excel导入导出通用方法 2.importjava.io.OutputStream; 3.importjava.util.List; 5.importorg.apache.struts2.ServletActionContext; 6.importjava.lang.reflect.Field; 7. 8.importjxl.Workbook; 9.importjxl.format.Alignment; 10.importjxl.format.Border; 11.importjxl.format.BorderLineStyle; 12.importjxl.format.VerticalAlignment; 13.importjxl.write.Label; 14.importjxl.write.WritableCellFormat; 15.importjxl.write.WritableFont; 16.importjxl.write.WritableSheet; 17.importjxl.write.WritableWorkbook; 18./*** 20.*/ 21.publicclassExportExcel{ 22./************************************************************************** * 27.*/ 28.publicfinalstaticStringexportExcel(StringfileName,String[]Title,Lis t 29.Stringresult="系统提示: Excel文件导出成功! "; 30.//以下开始输出到EXCEL 31.try{ 32.//定义输出流,以便打开保存对话框______________________begin 33.HttpServletResponseresponse=ServletActionContext.getResponse(); 34.OutputStreamos=response.getOutputStream();//取得输出流 35.response.reset();//清空输出流 36.response.setHeader("Content-disposition","attachment;filename="+newSt ring(fileName.getBytes("GB2312"),"ISO8859-1")); 37.//设定输出文件头 38.response.setContentType("application/msexcel");//定义输出类型 39.//定义输出流,以便打开保存对话框_______________________end 40. 41./************创建工作簿*************/ 42.WritableWorkbookworkbook=Workbook.createWorkbook(os); 43. 44./************创建工作表*************/ 45. 46.WritableSheetsheet=workbook.createSheet("Sheet1",0); 47. 48./************设置纵横打印(默认为纵打)、打印纸******************/ 49.jxl.SheetSettingssheetset=sheet.getSettings(); 50.sheetset.setProtected(false); 51. 52. 53./**************设置单元格字体***************/ 54.WritableFontNormalFont=newWritableFont(WritableFont.ARIAL,10); 55.WritableFontBoldFont=newWritableFont(WritableFont.ARIAL,10,WritableF ont.BOLD); 56. 57./**************以下设置三种单元格样式,灵活备用*************/ 58.//用于标题居中 59.WritableCellFormatwcf_center=newWritableCellFormat(BoldFont); 60.wcf_center.setBorder(Border.ALL,BorderLineStyle.THIN);//线条 61.wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE);//文字垂直对 齐 62.wcf_center.setAlignment(Alignment.CENTRE);//文字水平对齐 63.wcf_center.setWrap(false);//文字是否换行 64. 65.//用于正文居左 66.WritableCellFormatwcf_left=newWritableCellFormat(NormalFont); 67.wcf_left.setBorder(Border.NONE,BorderLineStyle.THIN);//线条 68.wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE);//文字垂直对齐 69.wcf_left.setAlignment(Alignment.LEFT);//文字水平对齐 70.wcf_left.setWrap(false);//文字是否换行 71. 72. 73./*****************以下是EXCEL开头大标题,暂时省略**********************/ 74.//sheet.mergeCells(0,0,colWidth,0); 75.//sheet.addCell(newLabel(0,0,"XX报表",wcf_center)); 76./*****************以下是EXCEL第一行列标题**********************/ 77.for(inti=0;i 78.sheet.addCell(newLabel(i,0,Title[i],wcf_center)); 79.} 80./*****************以下是EXCEL正文数据**********************/ 81.Field[]fields=null; 82.inti=1; 83.for(Objectobj: listContent){ 84.fields=obj.getClass().getDeclaredFields(); 85.intj=0; 86.for(Fieldv: fields){ 87.v.setAccessible(true); 88.Objectva=v.get(obj); 89.if(va==null){ 90.va=""; 91.} 92.sheet.addCell(newLabel(j,i,va.toString(),wcf_left)); 93.j++; 94.} 95.i++; 96.} 97./************将以上缓存中的内容写到EXCEL文件中*********/ 98.workbook.write(); 99./***********关闭文件**************/ 100.workbook.close(); 101. 102.}catch(Exceptione){ 103.result="系统提示: Excel文件导出失败,原因: "+e.toString(); 104.System.out.println(result); 105.e.printStackTrace(); 106.} 107.returnresult; 108.} 109.} 3.通用导出: [java]viewplaincopy 2. 3. 4.importjava.io.FileOutputStream; 5.importjava.io.OutputStream; 6.importjava.lang.reflect.Field; 7.importjava.lang.reflect.Method; 8.importjava.util.ArrayList; 9.importjava.util.Collection; 10.importjava.util.Date; 11.importjava.util.HashMap; 12.importjava.util.Iterator; 13.importjava.util.List; 14.importjava.util.Map; 15. 16. 17.importorg.apache.poi.hssf.usermodel.HSSFRichTextString; 18.importorg.apache.poi.hssf.usermodel.HSSFWorkbook; 19.importorg.apache.poi.ss.usermodel.Cell; 20.importorg.apache.poi.ss.usermodel.RichTextString; 21.importorg.apache.poi.ss.usermodel.Row; 22.importorg.apache.poi.ss.usermodel.Sheet; 23.importorg.apache.poi.ss.usermodel.Workbook; 24. 25. 27. 28. 29.publicclassExcelExport2{ 30. 31. 32.publicstaticvoidexportExcel(Stringtitle,ClasspojoClass,Collectiondata Set, 33. 34.//使用userModel模式实现的,当excel文档出现10万级别的大数据文件可能导致OOM内存溢 出 35. 36.//使用eventModel实现,可以一边读一边处理,效率较高,但是实现复杂,暂时未实现 37. 38.privatestaticvoidexportExcelInUserModel(Stringtitle,ClasspojoClass,Col lectiondataSet, 39. 40.try{ 41.//首先检查数据看是否是正确的 42.if(dataSet==null||dataSet.size()==0){ 43.thrownewException("导出数据为空! "); 44. 45.if(title==null||out==null||pojoClass==null) 46. 47.thrownewException("传入参数不能为空! "); 48. 49.//声明一个工作薄 50.newHSSFWorkbook(); 51.//生成一个表格 52. 53. 54. 55.//标题 56.newArrayList 57.newArrayList 58.//拿到所有列名,以及导出的字段的get方法 59.newArrayList 60.newHashMap 61.//得到所有字段 62. 63.//遍历整个filed 64.for(inti=0;i 65. 66.class); 67.//如果设置了annottion 68.if(excel! =null){ 69.//添加到标题 70. 71.//添加标题的列宽 72. 73.//添加到需要导出的字段的方法 74. 75.//System.out.println(i+"列宽 "+excel.exportName()+""+excel.exportFieldWidth()); 76.newStringBuffer("get"); 77.0,1) 78. 79.1)); 80. 81. 82. 83.newClass[]{}); 84. 85. 86. 87.if(excel.exportConvertSign()==1) 88. 89.newStringBuffer("get"); 90.0,1) 91. 92.1)); 93."Convert"); 94.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Excel 工作 如何 导入 txt 文件