Excel2017工作表中如何导入.txt文件

更新时间:2024-02-10 06:34:01 阅读量: 经典范文大全 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

篇一: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. 适当调整表格显示内容的位置。

本文来源:https://www.bwwdw.com/article/wynb.html

Top