C#怎样读取数据库批量打印word模版
1. 二进制数据由十六进制数表示,可以使用 binary、varbinary和 image数据类型存储。
2. binary固定长度(最多为8K)的二进制数据类型。
binary[ ( n) ] 固定长度的 n个字节二进制数据。
N必须从 1 到 8,000。
存储空间大小为 n+4 字节。
3. varbinary可变长度(最多为8K)的二进制数据类型。
varbinary[ ( n) ]n个4. 字节变长二进制数据。
n必须从 1 到 8,000。
存储空间大小为实际输入数据长度 +4个字节,而不是 n个字节。
输入的数据长度可能为 0 字节。
在 SQL-92 中 varbinary的同义词为 binary varying。
5. image用来存储长度超过 8 KB 的可变长度的二进制数据。
6. 除非数据长度超过 8KB,否则一般宜用 varbinary 类型来存储二进制数据。
一般用来存放 Microsoft Word 文档、Microsoft Excel 电子表格、包含位图的图像、图形交换格式 (GIF) 文件和联合图像专家组 (JPEG) 文件。
7. 在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应用程序来解释。
例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。
8. 参考下列C# 代码:9. private void Page_Load(object sender, System.EventArgs e){//get the image id from the urlstring ImageId = Request.QueryString["img"];//build our query statementstring sqlText = "SELECT img_data, img_contenttype FROM Image WHERE img_pk = " + ImageId;SqlConnection connection = new SqlConnection( ConfigurationSettings.AppSettings["DSN"].ToString() );SqlCommand command = new SqlCommand( sqlText, connection);//open the database and get a datareaderconnection.Open();SqlDataReader dr = command.ExecuteReader();if ( dr.Read()) //yup we found our image{Response.ContentType = dr["img_contenttype"].ToString();Response.BinaryWrite( (byte[]) dr["img_data"] );}connection.Close();}}
从excel表格读取数据用Java代码实现批量上传写入数据库
java操作Excel的一种方法:在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。
其中jExcelAPI是一个韩国程序员的作品,虽然没有POI那样血统高贵,但是在使用过程中,感觉简单方便,对中文支持非常好,功能也比较强大。
它的下载地址是: http://www.andykhan.com/jexcelapi/ 当前的最高版本是2.4。
作者的网站上对它的特征有如下描述:● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体、数字、日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 搭建环境 将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。
基本操作 一、创建文件 拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:代码(CreateXLS.java)://生成Excel的类 import java.io.*; import jxl.*; import jxl.write.*; public class CreateXLS { public static void main(String args[]) { try {//打开文件 WritableWorkbook book= Workbook.createWorkbook(new File(“测试.xls”));//生成名为“第一页”的工作表,参数0表示这是第一页 WritableSheet sheet=book.createSheet(“第一页”,0);//在Label对象的构造子中指名单元格位置是第一列第一行(0,0)//以及单元格内容为test Label label=new Label(0,0,”test”);//将定义好的单元格添加到工作表中 sheet.addCell(label);/*生成一个保存数字的单元格 必须使用Number的完整包路径,否则有语法歧义 单元格位置是第二列,第一行,值为789.123*/ jxl.write.Number number = new jxl.write.Number(1,0,789.123); sheet.addCell(number);//写入数据并关闭文件 book.write(); book.close(); }catch(Exception e) { System.out.println(e); } } } 编译执行后,会在当前位置产生一个Excel文件。
三、读取文件 以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下://读取Excel的类 import java.io.*; import jxl.*; public class ReadXLS { public static void main(String args[]) { try { Workbook book= Workbook.getWorkbook(new File(“测试.xls”));//获得第一个工作表对象 Sheet sheet=book.getSheet(0);//得到第一列第一行的单元格 Cell cell1=sheet.getCell(0,0); String result=cell1.getContents(); System.out.println(result); book.close(); }catch(Exception e) { System.out.println(e); } } } 程序执行结果:test 四、修改文件 利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。
下面的例子是在我们已经生成的Excel文件中添加一个工作表://修改Excel的类,添加一个工作表 import java.io.*; import jxl.*; import jxl.write.*; public class UpdateXLS { public static void main(String args[]) { try {//Excel获得文件 Workbook wb=Workbook.getWorkbook(new File(“测试.xls”));//打开一个文件的副本,并且指定数据写回到原文件 WritableWorkbook book= Workbook.createWorkbook(new File(“测试.xls”),wb);//添加一个工作表 WritableSheet sheet=book.createSheet(“第二页”,1); sheet.addCell(new Label(0,0,”第二页的测试数据”)); book.write(); book.close(); }catch(Exception e) { System.out.println(e); } } } 执行结果如图:高级操作 一、 数据格式化 在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用。
1、 字串格式化 字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和WritableCellFormat类来负责。
假设我们在生成一个含有字串的单元格时,使用如下语句,为方便叙述,我们为每一行命令加了编号:WritableFont font1= new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD); ① WritableCellFormat format1=new WritableCellFormat(font1); ② Label label=new Label(0,0,”data 4 test”,format1) ③ 其中①指定了字串格式:字体为TIMES,字号16,加粗显示。
WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。
②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化中会有更多描述。
③处使用了Label类的构造子,指定了字串被赋予那种格式。
在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们上面的实例,可以指定://把水平对齐方式指定为居中 format1.setAlignment(jxl.format.Alignment.CENTRE);//把垂直对齐方式指定为居中 format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); 二、单元格操作 Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI提供了这些支持。
这些操作相对比较简单,下面只介绍一下相关的API。
1、 合并单元格 WritableSheet.mergeCells(int m,int n,int p,int q); 作用是从(m,n)到(p,q)的单元格全部合并,比如:WritableSheet sheet=book.createSheet(“第一页”,0);//合并第一列第一行到第六列第一行的所有单元格 sheet.mergeCells...
(jsp)怎样实现把数据库的内容写入word文档?最好有个例子
在web-oa系统中,公文管理好象不可或缺,有时需要从数据库中查询一些数据以某种格式输出来,并以word文档的形式展现,有时许多word文档保存到数据库中的某个表的Blob字段里,服务器再把保存在Blob字段中的图片文件展现给用户。
通过网上查找发现很少有关于此类的文章,现在整理起来供大家参考。
1在client端直接生成word文档 在jsp页面上生成word文档非常简单,只需把contentType=”text/html”改为contentType="application/msword; charset=utf-8"即可,代码如下: 通过设置可以使原来页面的内容在word中表现出来。
如果需要把word文档下载下来,只需在jsp页面上面加上如下代码: 其中filename.doc中filename是要下载的word文档的文件名,可以通过来自行定制,如下 .doc"); %> 这样提供一个提示信息供用户选择如下图所示 小技巧:如果程序员需要在生成word文档的时候按照自己预先在word上设计好的格式,可以复制word格式然后粘贴到frontpage中,取html代码贴到jsp页面即可。
2 在客户端输出存在数据库中的word实体 这里只讨论在client输出oracle中BLOB字段中的word文档实体。
其中调用了类getBlobBean,该类提供了从oracle中取出blob功能,代码如下: package yourpackage; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import oracle.sql.*; import beans.yourbeanpackage. getBlobBean; /** * Title: * Description: * Copyright: Copyright (c) 2004 * Company: * @author not attributable * @version 1.0 */ public class GetBlobServlet1 extends HttpServlet { //设置输出内容类型,这个设置很重要,否则客户端浏览器不能识别输出内容,导致弹出下载的对话框。
private static final String CONTENT_TYPE = "application/msword;charset=utf-8"; //Initialize global variables public void init() throws ServletException { } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); perform(request,response); } public void perform(HttpServletRequest request, HttpServletResponse response){ try{ //该类功能是从oracle哭中取出blob实体 getBlobBean getBlob=new getBlobBean(); OutputStream sos = response.getOutputStream(); getBlob.connFunction(); oracle.sql.BLOB blob=getBlob.getBlob("cehui"); //输出word文档 if(blob!=null){ InputStream pi = blob.getBinaryStream(); int blobsize =(int)blob.length(); byte[] blobbytes = new byte[blobsize]; int bytesRead = 0; while ((bytesRead = pi.read(blobbytes)) != -1) { sos.write(blobbytes, 0, bytesRead); } pi.close(); sos.flush(); sos.close(); } getBlob.dropConnFunction(); }catch(Exception e){ System.out.println(e.toString()); } } //Clean up resources public void destroy() { } } 3在client端直接生成EXCEL文档 生成 生成例子excel 。
用WORD排版面,倒出HTML 把代码拷贝到网页里,然后这个JSP页面打印你就随心所欲的控制了。
4在client端直接生成PDF文档 需要下载JAR包:以下代码在JDK1.4 RESIN2.16 下测试通过 ITEXT包 http://mesh.dl.sourceforge.net/sourceforge/itext/itext-1.3.5.jar 字体包 http://itext.sourceforge.net/downloads/iTextAsian.jar JSP生成到客户IE端直接打开 ie_PDF.jsp ------------------------------- 在服务器端生成不下载。
server_PDF.jsp <% String filename = "D:\\test\\111111.pdf" ; Document document = new Document(PageSize.A4); ServletOutputStream out1 = response.getOutputStream(); try{ PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename) ); document.open(); document.add(new Paragraph("Hello World中文支持...
如何将光盘上的文件名批量录入数据库或txt、word、excel文档?
1.提取单条记录//import java.sql.*; Connection conn=null; Statement stmt=null; ResultSet rs=null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:%%1"; con=DriverManager.getConnection(url,%%2,%%3); stmt=conn.createStatement(); stmt.executeUpdate(%%4); rs=stmt.executeQuery(%%5); }catch(Exception e){ e.printStackTrace(); } finally{ try { if(rs!=null) rs.close(); if(stmt!=null) stmt.close(); if(conn!=null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } }3.显示表格/* import java.awt.*; import javax.swing.*; import java.sql.*; import javax.swing.table.*;*/ String[] colHeads=%%4; Connection conn=null; Statement stmt=null; ResultSet rs=null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:%%1"; conn=DriverManager.getConnection(url,%%2,%%3); stmt=conn.createStatement(); rs=stmt.executeQuery("SELECT count(*) as au_count from "+%%5); rs.next(); int iCount=rs.getInt("au_count"); Object[][] data=new Object[iCount][]; int i=0; rs=stmt.executeQuery("SELECT * from "+%%5); while(rs.next()){ data[i]=new Object[iCount]; data[i][0]=rs.getString("au_fname"); data[i][1]=rs.getString("Phone"); data[i][2]=rs.getString("City"); i++; } JTable table=new JTable(data,colHeads); JScrollPane jsp=new JScrollPane(table); getContentPane().add(jsp); }catch(Exception e){ e.printStackTrace(); } finally{ try { if(rs!=null) rs.close(); if(stmt!=null) stmt.close(); if(conn!=null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } }6.关闭时关闭连接//import java.sql.*; addWindowListener(new WindowAdapter{ public void windowClosing(WindowEvent wevent){ if(stmt!=null){ try { if(rs!=null) rs.close(); if(stmt!=null) stmt.close(); if(conn!=null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } }7.执行命令//import java.sql.*; Connection conn=null; PreparedStatement pst=null; try { conn=DriverManager.getConnection(url); pst=conn.prepareStatement("Insert Into grade(%%1) Values (?)"); pst.setInt(1,%%2);//pst.setString(2,%%2); pst.addBatch(); pst.executeBatch(); } catch (SQLException e){ e.printStackTrace(); } finally{ try { if (pst != null) pst.close(); if (conn != null) conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }13.MySQL数据库//import java.sql.*;//Class.forName("org.gjt.mm.mysql.Driver").newInstance(); Class.forName("com.mysql.jdbc.Driver");//String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"; String url ="jdbc:mysql://localhost:3306/%%1"; //%%1为数据库名//myDB为数据库名 Connection conn= DriverManager.getConnection(url,%%2,%%3); //,"root","root" Statement stmtNew=conn.createStatement();17.延时 try { Thread.sleep(Integer.Parse(%%1)); } catch(InterruptedException e) { e.printStackTrace(); }20.数据库存入二进制字段数据 InputStream pic = new FileInputStream(dto.get(i).getLibPic()); sql = "INSERT INTO piclib (name,pic,sign,remark) VALUES (?,?,?,?)"; pstmt = con.prepareStatement(sql); pstmt.setString(1, dto.get(i).getName()); pstmt.setBinaryStream(2,pic,(int)dto.get(i).getLibPic().length());22.批量执行SQL和存储过程//import java.sql.*; Connection conn = null; PreparedStatement pst = null; CallableStatement cs = null; try { Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url = "jdbc:oracle:thin:@localhost:1521:huapu"; // orcl为数据库的SID conn = DriverManager.getConnection(url,%%2,%%3); cs = conn.prepareCall("{call abc(?,?}"); pst = conn.prepareStatement("Insert Into grade(%%1) Values (?)"); pst.setString(1, ""); // pst.setInt(2,%%2); pst.addBatch(); pst.executeBatch(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (pst != null) pst.close(); if (cs != null) cs.close(); if (conn != null) conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
转载请注明出处51数据库 » 批量读取word进数据库