篇一:SQL 将txt文件导入sql数据库
就一句sql代码搞定,导入sql2000的代码。
BULK INSERT 表名 FROM 'F:\你的文本文件.txt' WITH ( FIELDTERMINATOR ='以什么符号分割数据',
ROWTERMINATOR= '以什么符号加\n结尾')--\n是回车的意思,就是回车前面是什么符号,如果没符号直接单引号\n
例如:BULK INSERT bb FROM 'F:\2008-02-18.txt' WITH ( FIELDTERMINATOR =',', ROWTERMINATOR= ',\n')
bb是表名,f盘中的F:\2008-02-18.txt文件, FIELDTERMINATOR =','每个数据是以逗号分隔的,
ROWTERMINATOR= ',\n'每行数据以逗号回车结尾。
我导入过很多次。
使用BULK INSERT
用法如下:
stu.txt 结构
1,Jim
2,Kate
3,Tom
...
BULK INSERT dbo.TABLE1
FROM 'd:\stu.txt'
WITH (
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
查看table1里的数据
select * from table1
就ok了。
在做一些web数据库管理系统的时候经常要实现将帐户批量注册的功能,今天就来讲讲如何在C#-web项目中将txt文件和excel文件导入 SQL2000数据库。
1.数据库准备
在SQL2000数据库的实例数据库pubs中建立一个数据表txtInsert,字段很简 单:id,name两个。
2.txt文本文件导入
对于数据文件导入与导出SQL2000提供了BULK INSERT和BCP语句,在这里可以使用BULK INSERT命令实现。假设在c盘上有一个文本文件stu.txt内容为:
1,tom
2,jack
3,jhon
实现导入的C#代码如下:
protected System.Web.UI.HtmlControls.HtmlInputFile fName;
protected System.Web.UI.WebControls.Button BtnInsert;
//上面两个控件自己添加
代码
private void BtnInsert_Click(object sender, System.EventArgs e){
string fPath=this.fName.PostedFile.FileName;//获得要导入的文本文件
string extName=fPath.Substring(fPath.LastIndexOf(".")+1);//获得文件的扩展名
SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象
con.Open();
try
{
SqlCommand com=new SqlCommand("BULK INSERT pubs.dbo.txtInsert FROM '"+fPath+"' WITH (FIELDTERMINATOR = ',',ROWTERMINATOR= '\n')",con);
//其中的 FIELDTERMINATOR=','指明字段间所使用的分隔符为逗号
//其中 ROWTERMINATOR= '\n'指明记录间所使用的分隔符为回车
com.ExecuteNonQuery();
Response.Write("<script language=javascript& gt;alert('数据导入成功!')</script>");
}
catch (SqlException SQLexc)
{
Response.Write("导入数据库时出错:" + SQLexc.ToString());
}
con.Close();
}
好了,这个txt文件的导入相对简单,在数据库中我也没有设置主键,我在里面也没有加出错回滚事务操作,在下面的excel文件的导入中介绍。
3.excel 文件的导入
在c盘里建立一个stu.xls文件,在sheet1工作表中有两列数据如下:
编号 姓名
1 tom
2 jack
3 john
注 意,工作表的第一行是作为标题行的不会被插入到数据库中,真正导入从第二行开始。
为了演示事物出错回滚,在这里将txtInsert数据库表中的 id字段设置为主键。实现的C#代码如下:
代码
private void BtnInsert_Click(object sender, System.EventArgs e){
string fPath=this.fName.PostedFile.FileName;//获得要导入的文本文件
string extName=fPath.Substring(fPath.LastIndexOf(".")+1);//获得文件的扩展名
SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象
con.Open();
//注意下面的连接字符串,是它起到了导入的作用
SqlCommand excelCmd=new SqlCommand("insert into txtInsert select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE="+fPath+"',Sheet1$)",con);
SqlTransaction myTran=con.BeginTransaction();//开始一个事务操作 excelCmd.Transaction=myTran;
try
{
excelCmd.ExecuteNonQuery();
myTran.Commit();//提交事务
Response.Write("<script language=javascript& gt;alert('数据导入成功!')</script>");
}
catch (SqlException err)
{
myTran.Rollback(); //出错回滚事务操作
//以下三行是去掉数据库出错信息中的非法字符单引号、回车和换行符,否则在使用时 javascript代码将有语法错误
//因为js的编码和c#的编码不同
string errString=err.Message.Replace("'"," ");
errString=errString.Replace(Convert.ToChar(13).ToString(),"");errString=errString.Replace(Convert.ToChar(10).ToString(),"");//显示出错信息框
Response.Write("<script language=javascript& gt;alert('导入数据库时出错!详细信息:"+errString+"')</script>");
}
con.Close();
}
这里“显示出错信息框”开始我没有田间那三行代码,结果搞了半天,最后还是在html文件中发现javascript代码部分出现了分行,老是提示“未结 束的字符串常量”,所以导致不能打开信息框,郁闷死我了,花了好多时间。
4.将excel中部分列导入数据库的方法
上面讲了关于将整个 excel文件导入数据库的方法,那么在实际项目中遇到将excel文件中若干列导入数据库怎么办的呢,原理差不多,我就将代码直接给出了:
代码
stringfPath=this.fName.PostedFile.FileName;//获得要导入的文本文
件
string extName=fPath.Substring(fPath.LastIndexOf(".")+1);//获得文件的扩展名
SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象
con.Open();
string mystring="Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '"+fPath+"';Extended Properties=Excel 8.0";
OleDbConnection cnnxls = new OleDbConnection (mystring);
OleDbDataAdapter myDa =new OleDbDataAdapter("select * from [Sheet1$]",cnnxls);
DataSet myDs =new DataSet();
myDa.Fill(myDs);
if(myDs.Tables[0].Rows.Count > 0)
{
string strSql = "";
string CnnString="Provider=SQLOLEDB;database=pubs;server=.;uid=sa;pwd=";
OleDbConnection conn =new OleDbConnection(CnnString);
conn.Open ();
OleDbCommand myCmd =null; for(int i=0; i<myDs.Tables[0].Rows.Count;i++)//第一个工作表中行数,不包括第一行,
{
strSql="insert into txtInsert(id,name) values (";
strSql += myDs.Tables[0].Rows[i].ItemArray[0].ToString() + ", '";
strSql += myDs.Tables[0].Rows[i].ItemArray[1].ToString() + "')";
myCmd=new OleDbCommand(strSql,conn);
try
{
myCmd.ExecuteNonQuery
();
Response.Write("<script language=javascript& gt;alert('数据导入成功!')</script>");
}
catch (OleDbException err)
{
Response.Write("导入数据库时出错:" +err.ToString());
break;
}
}
conn.Close();
篇二:excel导入导出通用方法
1. package oa.common.utils;
2. import java.io.OutputStream;
3. import java.util.List;
4. import javax.servlet.http.HttpServletResponse;
5. import org.apache.struts2.ServletActionContext;
6. import java.lang.reflect.Field;
7.
8. import jxl.Workbook;
9. import jxl.format.Alignment;
10. import jxl.format.Border;
11. import jxl.format.BorderLineStyle;
12. import jxl.format.VerticalAlignment;
13. import jxl.write.Label;
14. import jxl.write.WritableCellFormat;
15. import jxl.write.WritableFont;
16. import jxl.write.WritableSheet;
17. import jxl.write.WritableWorkbook;
18. /***
19. * @author lsf
20. */
21. public class ExportExcel {
22. /**************************************************************************
*
23.* @param fileName EXCEL文件名称
24.* @param listTitle EXCEL文件第一行列标题集合
25.* @param listContent EXCEL文件正文数据集合
26.* @return
27.*/
28. public final static String exportExcel(String fileName,String[] Title, Lis
t<Object> listContent) {
29.String result="系统提示:Excel文件导出成功!";
30.// 以下开始输出到EXCEL
31.try {
32. //定义输出流,以便打开保存对话框______________________begin
33. HttpServletResponse response=ServletActionContext.getResponse();
34. OutputStream os = response.getOutputStream();// 取得输出流
35. response.reset();// 清空输出流
36. response.setHeader("Content-disposition", "attachment; filename="+ new St
ring(fileName.getBytes("GB2312"),"ISO8859-1"));
37. // 设定输出文件头
38. response.setContentType("application/msexcel");// 定义输出类型
39. //定义输出流,以便打开保存对话框_______________________end
40.
41. /** **********创建工作簿************ */
42. WritableWorkbook workbook = Workbook.createWorkbook(os);
43.
44. /** **********创建工作表************ */
45.
46. WritableSheet sheet = workbook.createSheet("Sheet1", 0);
47.
48. /** **********设置纵横打印(默认为纵打)、打印纸***************** */
49. jxl.SheetSettings sheetset = sheet.getSettings();
50. sheetset.setProtected(false);
51.
52.
53. /** ************设置单元格字体************** */
54. WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
55. WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,WritableF
ont.BOLD);
56.
57. /** ************以下设置三种单元格样式,灵活备用************ */
58. // 用于标题居中
59. WritableCellFormat wcf_center = new WritableCellFormat(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. WritableCellFormat wcf_left = new WritableCellFormat(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(new Label(0, 0, "XX报表", wcf_center));
76. /** ***************以下是EXCEL第一行列标题********************* */
77. for (int i = 0; i < Title.length; i++) {
78. sheet.addCell(new Label(i, 0,Title[i],wcf_center));
79. }
80. /** ***************以下是EXCEL正文数据********************* */
81. Field[] fields=null;
82. int i=1;
83. for(Object obj:listContent){
84. fields=obj.getClass().getDeclaredFields();
85. int j=0;
86. for(Field v:fields){
87.v.setAccessible(true);
88.Object va=v.get(obj);
89.if(va==null){
90. va="";
91.}
92.sheet.addCell(new Label(j, i,va.toString(),wcf_left));
93.j++;
94. }
95. i++;
96. }
97. /** **********将以上缓存中的内容写到EXCEL文件中******** */
98. workbook.write();
99. /** *********关闭文件************* */
100. workbook.close();
101.
102.} catch (Exception e) {
103. result="系统提示:Excel文件导出失败,原因:"+ e.toString();
104. System.out.println(result);
105. e.printStackTrace();
106.}
107.return result;
108. }
109. }
3.通用导出:
[java] view plaincopy
1. package com.huateng.common.excel.parser;
2.
3.
4. import java.io.FileOutputStream;
5. import java.io.OutputStream;
6. import java.lang.reflect.Field;
7. import java.lang.reflect.Method;
8. import java.util.ArrayList;
9. import java.util.Collection;
10. import java.util.Date;
11. import java.util.HashMap;
12. import java.util.Iterator;
13. import java.util.List;
14. import java.util.Map;
15.
16.
17. import org.apache.poi.hssf.usermodel.HSSFRichTextString;
18. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
19. import org.apache.poi.ss.usermodel.Cell;
20. import org.apache.poi.ss.usermodel.RichTextString;
21. import org.apache.poi.ss.usermodel.Row;
22. import org.apache.poi.ss.usermodel.Sheet;
23. import org.apache.poi.ss.usermodel.Workbook;
24.
25.
26. import com.huateng.test.pojo.Student;
27.
28.
29. public class ExcelExport2 {
30.
31.
32. public static void exportExcel(String title, Class pojoClass,Collection data
Set,
33.
34. //使用userModel模式实现的,当excel文档出现10万级别的大数据文件可能导致OOM内存溢
出
35.
36. //使用eventModel实现,可以一边读一边处理,效率较高,但是实现复杂,暂时未实现
37.
38. private static void exportExcelInUserModel(String title, Class pojoClass,Col
lection dataSet,
39.
40. try {
41. // 首先检查数据看是否是正确的
42. if (dataSet == null || dataSet.size()==0) {
43. throw new Exception("导出数据为空!");
44.
45. if(title == null || out == null || pojoClass == null)
46.
47. throw new Exception("传入参数不能为空!");
48.
49. // 声明一个工作薄
50. new HSSFWorkbook();
51. // 生成一个表格
52.
53.
54.
55. // 标题
56. new ArrayList<String>();
57. new ArrayList<Integer>();
58. // 拿到所有列名,以及导出的字段的get方法
59. new ArrayList<Method>();
60. new HashMap<String,Method>();
61. // 得到所有字段
62.
63. // 遍历整个filed
64. for (int i = 0; i < fileds.length; 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. new StringBuffer("get");
77. 0, 1)
78.
79. 1));
80.
81.
82.
83. new Class[] {});
84.
85.
86.
87. if(excel.exportConvertSign()==1)
88.
89. new StringBuffer("get");
90. 0, 1)
91.
92. 1));
93. "Convert");
94. //System.out.println("convert: "+getConvertMethodName.toString());
95.
96. new Class[] {});
97.
篇三:如何在Word中嵌入已有的Excel工作表
如何在Word中嵌入已有的Excel工作表
Word和Excel是我们在日常工作中经常使用的软件,在实际工作中,我们如果能熟练地将二者配合起来,发挥它们各自的长处,会取得事半功倍的效果。
例如:我们要写一篇关于学期成绩的分析报告,我们可在Word中编辑文本内容,然后在合适位置嵌入已经制作好的Excel成绩表格。在Word中嵌入已有的Excel工作表的方法很多,各具特点,可根据具体情况而选用。
方法一:利用“复制、粘贴”命令来嵌入
此种方法插入的表格内容为Word文档中的普通表格,且与Excel脱离了关系。
1. 打开Excel工作表,选定要嵌入的对象。
2. 单击常用工具栏中的〔复制〕按钮,将选中的对象复制到“剪贴板”中。
3. 回到正在编辑的Word文档中,定位插入点,然后单击“编辑”菜单中的“粘贴”命令。
方法二:利用“选择性粘贴”命令来嵌入 利用此方法插入表格后,双击插入的表格可进入Excel,并可以在其中进行编辑,但原Excel工作表中的数据如有改变,对Word中嵌入的表格不会产生影响。
1. 打开Excel工作表,选定要嵌入的对象。
2. 单击常用工具栏中的〔复制〕按钮,将选中的对象复制到“剪贴板”中。
3. 回到正在编辑的Word文档中,定位插入点,再单击“编辑”菜单中的“选择性粘贴”命令。 4. 在弹出的“选择性粘贴”对话框中,选择“粘贴”单选框,表示将对象嵌入Word文档中。在“作为”列表中选“MicrosoftExcel工作表对象”选项,表示粘贴的内容可以用Excel工作表来编辑它,最后按〔确定〕按钮。
方法三:利用插入对象的方法来嵌入表格
此种方法表格一旦嵌入后,双击插入的内容可进入Excel,并在其中编辑它。而且如果对原Excel工作表中的数据进行修改,Word中嵌入的表格也随之改变。
1. 打开正在编辑的Word文档,首先定位光标,然后单击“插入”菜单中的“对象”命令。
2. 弹出“对象”对话框,选择“由文件创建”选项卡,在“文件名”框中输入Excel工作表所在位置,或按〔浏览〕按钮进行选择。选中“链接到文件”复选框,可使插入内容随原Excel表格中的数据的改变而改变,最后按〔确定〕按钮。
3. 适当调整表格显示内容的位置。
《Excel2017工作表中如何导入.txt文件》出自:百味书屋
链接地址:http://www.850500.com/news/72916.html
转载请保留,谢谢!