http://code.google.com/p/simplejee/source/browse/trunk/simplejee/src/com/yuqiaotech/simplejee/misc/Excel.java
留个地址,备用,呵呵!!
最近项目中,要用到导出到Excel文件的功能,用到了Apatch的开源组件POI,感觉挺方便的,和大家一起分享下:
用POI把数据导出为Excel
<!--相关信息-->
代码
package com.javaeye.yongsky;
import java.sql.*;
import java.util.*;
import com.microsoft.jdbc.*;
public class SheetDataSource {
private static Connection con ;
private static final String DatabaseName = "POIDEMO";
private static final String userName = "sa";
private static final String password = "123";
public SheetDataSource()
{
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
try {
con = DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName="+DatabaseName,userName,password);
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static ResultSet selectAllDataFromDB() throws SQLException
{
new SheetDataSource();
Statement stmt = con.createStatement();
return stmt.executeQuery("select * from COMPANY");
}
}
<script type="text/javascript">render_code();</script>
上面部分代码主要是从数据库里面取出数据,作为Excel的数据源.
(二)PoiDemo.java
代码
package com.javaeye.yongsky;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.*;
import javax.swing.JOptionPane;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFFooter;
import org.apache.poi.hssf.usermodel.HSSFHeader;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class PoiDemo {
//表头
public static final String[] tableHeader = {"企业中文名","所属国家","企业英文名","2003年排名","2004年排名","2005年排名",
"2006年排名","2007年排名","主要业务","2003年营业额","2004年营业额","2005年营业额","2006年营业额","2007年营业额","企业编号","名次升降",
"图片","状况"};
//创建工作本
public static HSSFWorkbook demoWorkBook = new HSSFWorkbook();
//创建表
public static HSSFSheet demoSheet = demoWorkBook.createSheet("The World's 500 Enterprises");
//表头的单元格个数目
public static final short cellNumber = (short)tableHeader.length;
//数据库表的列数
public static final int columNumber = 18;
/**
* 创建表头
* @return
*/
public static void createTableHeader()
{
HSSFHeader header = demoSheet.getHeader();
header.setCenter("世界五百强企业名次表");
HSSFRow headerRow = demoSheet.createRow((short) 0);
for(int i = 0;i < cellNumber;i++)
{
HSSFCell headerCell = headerRow.createCell((short) i);
headerCell.setEncoding(HSSFCell.ENCODING_UTF_16);
headerCell.setCellValue(tableHeader[i]);
}
}
/**
* 创建行
* @param cells
* @param rowIndex
*/
public static void createTableRow(List<string> cells,</string>short rowIndex)
{
//创建第rowIndex行
HSSFRow row = demoSheet.createRow((short) rowIndex);
for(short i = 0;i < cells.size();i++)
{
//创建第i个单元格
HSSFCell cell = row.createCell((short) i);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(cells.get(i));
}
}
/**
* 创建整个Excel表
* @throws SQLException
*
*/
public static void createExcelSheeet() throws SQLException
{
createTableHeader();
ResultSet rs = SheetDataSource.selectAllDataFromDB();
int rowIndex = 1;
while(rs.next())
{
List<string> list = new ArrayList<string>(); </string></string>
for(int i = 1;i <= columNumber;i++)
{
list.add(rs.getString(i));
}
createTableRow(list,(short)rowIndex);
rowIndex++;
}
}
/**
* 导出表格
* @param sheet
* @param os
* @throws IOException
*/
public void exportExcel(HSSFSheet sheet,OutputStream os) throws IOException
{
sheet.setGridsPrinted(true);
HSSFFooter footer = sheet.getFooter();
footer.setRight("Page " + HSSFFooter.page() + " of " +
HSSFFooter.numPages());
demoWorkBook.write(os);
}
public static void main(String[] args) {
String fileName = "D:\\世界五百强企业名次表.xls";
FileOutputStream fos = null;
try {
PoiDemo pd = new PoiDemo();
pd.createExcelSheeet();
fos = new FileOutputStream(fileName);
pd.exportExcel(demoSheet,fos);
JOptionPane.showMessageDialog(null, "表格已成功导出到 : "+fileName);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "表格导出出错,错误信息 :"+e+"\n错误原因可能是表格已经打开。");
e.printStackTrace();
} finally {
try {
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
本人,已经成功将sqlserver2005中的数据导入到Excel中,感觉确实用的挺方便的,大家可以试试!!
还有一个问题就是,POI对中文的处理不是很好,需要进行设置一下: 如在创建Excel表头的时候
// 创建行
public static void createTableRow(List<String> cells, short rowIndex) {
// 创建第rowIndex行
HSSFRow row = demoSheet.createRow((short) rowIndex);
for (short i = 0; i < cells.size(); i++) {
// 创建第i个单元格
HSSFCell cell = row.createCell((short) i);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(cells.get(i));
}
}
注意上面的红色代码,可以很好的解决POI导出Excel乱码的问题,已经测试,加入了这句后,可以使用POI完美的支持中文了,哈哈!!
分享到:
相关推荐
4. **插入数据到Access数据库**:根据解析出的数据,执行SQL语句将数据插入到Access数据库中。 示例代码如下所示: ```vb <!-- result.asp --> 'on error resume next Dim filePath, fileName, fileExt, file_...
1. 创建数据连接:在Excel中,选择“数据”菜单,然后点击“获取数据” -> “从其他源” -> “从数据库”,接着选择Access数据库文件。这将打开一个向导,引导你选择Access数据库和要导入的表。 2. 查询数据:连接...
此外,注意数据类型匹配,Excel中的数据可能需要转换为适合数据库字段的数据类型。 总之,C#结合NPOI或其他库,配合SQL Server,提供了强大的数据处理能力,可以从Excel文件中提取数据并将其存储到数据库中,这对...
在Web开发中,有时我们需要处理Excel数据,例如从Excel文件中导入数据到Access数据库,或者将数据库中的数据导出到Excel文件。这些操作在数据分析、报表生成等方面非常常见。 在"ASP excel导出/导入Access数据库...
本主题聚焦于使用C#编程语言将Excel文件的数据导入到Access数据库的过程,这是一个常见的数据处理需求,特别是在数据整合和分析时。以下是对这一过程的详细阐述。 首先,我们需要理解C#的基础知识。C#是一种面向...
10. **性能优化**:如果Excel文件非常大,可以考虑先将数据存储在内存或临时文件中,然后再分批插入数据库,以减轻数据库的压力。 总结起来,这个过程涉及了文件上传、Excel文件处理、数据库交互等多个环节,需要对...
本教程将指导你如何将Excel数据导入到Android应用的SQLite数据库.db文件中,以便在应用运行时能够访问和操作这些数据。我们将使用SQLite Expert Professional这款强大的SQLite数据库管理工具,该工具在提供的压缩包...
当我们需要将Excel中的数据存储到数据库中时,通常会涉及到数据导入的过程。以下是一个关于“Excel导入MySQL数据库实例”的详细知识讲解。 首先,了解基本概念: 1. Excel:Microsoft Excel是一款电子表格程序,...
在IT领域,尤其是在数据处理和应用开发中,将数据从Excel文件导入到SQL数据库是一项常见的任务。本项目“C#从Excel文件向SQL数据库中大批量导入数据”提供了一个实用的解决方案,尤其适用于处理大量基础数据。以下是...
此外,为了处理大量数据,工具可能采用流式处理,直接将数据写入Excel文件,而无需一次性加载所有数据到内存。 Excel文件的格式通常选择XLSX,它是Microsoft Office 2007及以后版本使用的XML格式,支持大量数据和...
在标题为“数据库数据导入到excel中 jsp”的场景下,我们主要探讨的是如何利用Java Web技术,尤其是JSP(JavaServer Pages)来实现数据在数据库与Excel之间的交互。描述中提到的实例涵盖了两个方向:将Excel数据导入...
标题中的"DELPHI 从EXCEL导入到数据库"是一个关于使用Delphi编程语言将Excel电子表格中的数据导入到数据库的应用实例。这个话题涉及到多个IT领域的知识点,包括Delphi编程、Excel文件处理以及数据库交互。 Delphi是...
7. **执行SQL语句**:在连接打开的状态下,使用SqlCommand对象执行INSERT语句,将数据一行一行地插入到数据库中。注意批量插入可以提高效率。 8. **处理错误**:在整个过程中,应妥善处理可能出现的异常,如文件...
我主要采用了JXLS和POI的第三方jar包,这几个程序实例,都是我参考各种资料,自己写的,都运行过,能把40万数据导入到Excel文件中,而且性能也挺好的,这几个是程序代码,我把这几个程序的文档总结也上传了,如果要...
在ASP(Active Server Pages)开发中,将Access数据库的数据导出到Excel是一种常见的需求,尤其在数据处理和报表生成时。下面将详细讲解两种方法,分别是在服务器端和客户端实现这个功能。 一、服务器端导出 在...
VB6操作Excel导入到SQL2000数据库,Excel必须保存成2003的格式
首先,需要在设计时或运行时动态添加一个`AxHost`控件到窗体上,然后通过`AxHost.ActiveXInstance`属性创建和控制Excel实例。 3. 数据库集成: 描述中提到的"附有数据库"可能意味着此项目还涉及到数据库操作。在...
本实例将探讨如何利用Java的JDBC(Java Database Connectivity)API将Excel文件中的数据保存到SQL Server数据库中。首先,我们需要理解Excel文件的结构以及JDBC的工作原理。 Excel文件通常是以.xlsx或.xls格式存储...
在VB.NET中,将数据库中的数据写入Excel文件是一个常见的任务,这涉及到对数据库的查询、数据处理以及Excel文件的创建和操作。以下是一些关键的知识点和步骤: 1. **VB.NET基础知识**:VB.NET是Visual Basic .NET的...
实例7-8 将SQL Server数据库中的数据导入到Excel工作表(DAO) 实例7-9 查询获取SQL Server数据库的数据(ADO) 实例7-10 查询获取SQL Server数据库的数据(DAO) 实例7-11 将工作表数据导入到SQL Server数据库...