在本文中,我们将带你了解java–使用jxl将数据添加到Excel文件在这篇文章中,我们将为您详细介绍java–使用jxl将数据添加到Excel文件的方方面面,并解答java中jxl怎么导入常见的疑惑
在本文中,我们将带你了解java – 使用jxl将数据添加到Excel文件在这篇文章中,我们将为您详细介绍java – 使用jxl将数据添加到Excel文件的方方面面,并解答java中jxl怎么导入常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的2、java利用jxl实现导出excel表、C#创建Excel文件并将数据导出到Excel文件的示例代码详解(图)、Excel 控件Spire.XLS V7.12.76发布 | 支持将Excel文件保存到Excel2016格式、java jxl将数据库中数据导出为excel。
本文目录一览:- java – 使用jxl将数据添加到Excel文件(java中jxl怎么导入)
- 2、java利用jxl实现导出excel表
- C#创建Excel文件并将数据导出到Excel文件的示例代码详解(图)
- Excel 控件Spire.XLS V7.12.76发布 | 支持将Excel文件保存到Excel2016格式
- java jxl将数据库中数据导出为excel
java – 使用jxl将数据添加到Excel文件(java中jxl怎么导入)
public class WriteExcel { private static WritableWorkbook workbook; private static WritableCellFormat timesstandard; private String inputFile; final private static int FONT_SIZE = 12; public void setoutputFile(String inputFile) { this.inputFile = inputFile; } private void prepareSheet(WritableSheet sheet) throws WriteException { sheet.mergeCells(0,1,0); sheet.mergeCells(3,4,0); sheet.mergeCells(6,7,0); WritableFont times12pt = new WritableFont(WritableFont.TIMES,FONT_SIZE); timesstandard = new WritableCellFormat(times12pt); CellView cv = new CellView(); cv.setFormat(timesstandard); } public void write() throws IOException,WriteException { File file = new File(inputFile); WorkbookSettings wbSettings = new WorkbookSettings(); wbSettings.setLocale(new Locale("en","EN")); WritableWorkbook workbook = Workbook.createWorkbook(file,wbSettings); workbook.createSheet("First",0); WritableSheet excelSheet = workbook.getSheet(0); prepareSheet(excelSheet); workbook.write(); workbook.close(); } public static void main(String[] args) throws WriteException,IOException { WriteExcel test = new WriteExcel(); test.setoutputFile("c:/Users/H/Desktop/test.xls"); test.write(); } }
我知道我需要另一个允许我访问该文件并向其添加一些数据的类:
class Modify { private static Logger logger = Logger.getLogger(Modify.class); private File inputWorkbook; private File outputWorkbook; public Modify(String input,String output) { inputWorkbook = new File(input); outputWorkbook = new File(output); logger.info("Input file: " + input); logger.info("Output file: " + output); } public void readWrite() throws IOException,BiffException,WriteException { logger.info("Reading..."); Workbook w1 = Workbook.getWorkbook(inputWorkbook); logger.info("copying..."); WritableWorkbook w2 = Workbook.createWorkbook(outputWorkbook,w1); if (inputWorkbook.getName().equals("test.xls")) { modify(w2); } w2.write(); w2.close(); logger.info("Done"); } private void modify(WritableWorkbook w) throws WriteException { logger.info("Modifying..."); WritableSheet sheet = w.getSheet("First"); //createContent(sheet); // contains methods responsible for adding data,for example: addNumber(sheet,cols,rows,2); private static void addNumber(WritableSheet sheet,int column,int row,double d) throws WriteException,RowsExceededException { Number number; number = new Number(column,row,d,timesstandard); sheet.addCell(number); } }
但我最终得到一个空白的Excel文件,仅包含合并的单元格.
如何介绍修改?
解决方法
在我看来,当你调用modify()时会实现一个新的,但是由于范围的原因,最后的所有更改都会被删除.
最后你会得到类似的东西
private WritableWorkbook modify(WritableWorkbook w) throws WriteException { logger.info("Modifying..."); WritableSheet sheet = w.getSheet("First"); //createContent(sheet); // contains methods responsible for adding data,for example: addNumber(sheet,2); return sheet; }
基本上.对addNumber的类似修改似乎也是如此.然后相应的调用将是sheet = addNumber(sheet,2);和w2 =修改(w2);
2、java利用jxl实现导出excel表
第一步:CSDN下载 jxl.jar,并导入项目中
第二步:创建实体类MarkesData.java
public class MarkesData {
private String user_name;// 姓名
private String area_name;// 地区
private String college_name;// 院校
private String class_name;// 班级
private String test_name;// 号码
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getArea_name() {
return area_name;
}
public void setArea_name(String area_name) {
this.area_name = area_name;
}
public String getCollege_name() {
return college_name;
}
public void setCollege_name(String college_name) {
this.college_name = college_name;
}
public String getClass_name() {
return class_name;
}
public void setClass_name(String class_name) {
this.class_name = class_name;
}
public String getTest_name() {
return test_name;
}
public void setTest_name(String test_name) {
this.test_name = test_name;
}
}
第三步:创建写出excel类WriExcel.java
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
* 利用jxl.jar实现数据库中的表信息导出Excel中
*
* @author Administrator
*
*/
public class WriExcel {
// 声明Excel表
WritableWorkbook book = null;
/**
* 通过传入(保存表信息的ArrayList,Excel存放路径位置)
*
* @param arlist
* 数据库中的表信息添加到ArrayList中
* @param Path
* Excel表存放的路径位置
*/
public void OutputExcel(ArrayList<MarkesData> arlist, String Path) {
try {
// 根据路径实例化Excel表
book = Workbook.createWorkbook(new File(Path));
// 设置工作表名
WritableSheet sheet = book.createSheet("单子", 0);
// 在单元格中生成表格题头
Label labe1 = new Label(0, 0, "姓名");
Label labe2 = new Label(1, 0, "地区");
Label labe3 = new Label(2, 0, "院校");
Label labe4 = new Label(3, 0, "班级");
Label labe5 = new Label(4, 0, "号码");
// 将生成的单元格添加到工作表中
sheet.addCell(labe1);
sheet.addCell(labe2);
sheet.addCell(labe3);
sheet.addCell(labe4);
sheet.addCell(labe5);
// 利用迭代器获取ArrayList中的信息
Iterator<MarkesData> it = arlist.iterator();
// i表示单元格所在的行数
int i = 1;
// while循环依次将数据写入Excel单元格中
while (it.hasNext()) {
// 通过迭代获得arlist里的MarkesData对象
MarkesData temp = (MarkesData) it.next();
// 取得数据生成单元格
Label label1 = new Label(0, i, temp.getUser_name());
Label label2 = new Label(1, i, temp.getArea_name());
Label label3 = new Label(2, i, temp.getCollege_name());
Label label4 = new Label(3, i, temp.getClass_name());
Label label5 = new Label(4, i, temp.getTest_name());
// 将生成的单元格添加到工作表中
sheet.addCell(label1);
sheet.addCell(label2);
sheet.addCell(label3);
sheet.addCell(label4);
sheet.addCell(label5);
// 增加行数
i++;
}
// 表实行写操作
book.write();
// 关闭表
book.close();
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (book != null)
book.close();
} catch (Exception e) {
System.out
.println("exception when closing Connection in finally");
System.out.println(e.getMessage().toString());
}
}
}
/**
* 进行数据库操作,从数据库中获取表信息
*
* @return 返回数据库中保存的表信息,保存在ArrayList中
*/
public ArrayList<MarkesData> connection() {
Connection conn = null;
try {
// 进行数据库连接操作
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=excel";
String userName = "sa"; // 默认用户名
String userPwd = "sql2005"; // 密码
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(dbURL, userName, userPwd);
Statement state = conn.createStatement();
String sql = "select * from data ";
// 执行sql语句获取数据库中的表信息,并放到ResultSet中
ResultSet rs = state.executeQuery(sql);
// 创建ArrayList,保存数据库信息
ArrayList<MarkesData> list = new ArrayList<MarkesData>();
while (rs.next()) {
MarkesData md = new MarkesData();
String user_name = rs.getString("user_name");
String area_name = rs.getString("area_name");
String college_name = rs.getString("college_name");
String class_name = rs.getString("class_name");
String test_name = rs.getString("test_name");
md.setUser_name(user_name);
md.setArea_name(area_name);
md.setCollege_name(college_name);
md.setClass_name(class_name);
md.setTest_name(test_name);
list.add(md);
}
rs.close();
state.close();
return list;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return null;
}
public static void main(String[] args) {
WriExcel w = new WriExcel();
// 从数据库获取表信息
ArrayList<MarkesData> arlist = w.connection();
// 根据表信息和路径向Excel中写数据
w.OutputExcel(arlist, "e:\\1.xls");
}
}
C#创建Excel文件并将数据导出到Excel文件的示例代码详解(图)
工具原料:
windows 7,visual studio 2010, microsoft office 2007
创建解决方案
菜单》新建》项目》Windows窗体应用程序:
添加相关组件:
添加两个DataGridView,一个TextBox,两个按钮 ,如下图:
添加Excel资源:
C#创建Excel文件,这里实际上是从资源中提取一个事先创建好的Excel文件,文件提取成功后,使用OleDb方法连接Excel,向Excel文件中写入数据。
先在文件夹中新建一个Excel文件,在Sheet1表的第一行设置列名:
双击“Resources.resx”文件打开资源文件视图:
添加现有文件,选择刚刚创建的Excel文件
从资源中提取Excel文件
string excelPath = AppDomain.CurrentDomain.BaseDirectory + "Excel" + DateTime.Now.Ticks + ".xlsx"; if (System.IO.File.Exists(excelPath)) { textBox1.Text += ("文件已经存在!"); return; } try { //从资源中提取Excel文件 System.IO.FileStream fs = new System.IO.FileStream(excelPath, FileMode.OpenOrCreate); fs.SetLength(0); fs.Write(Properties.Resources.Excel, 0, Properties.Resources.Excel.Length); fs.Close(); fs.Dispose(); textBox1.Text = "提取Excel文件成功!" + "\r\n"; } catch (System.Exception ex) { excelPath = string.Empty; textBox1.Text += ("提取Excel文件失败:" + ex.Message); textBox1.Text += ("\r\n"); Application.DoEvents(); return; }
定义连接字符串
//定义OleDB连接字符串 string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Persist Security Info=False;" + "data source=" + @excelPath + "; Extended Properties='Excel 12.0; HDR=yes; IMEX=10'"; OleDbConnection conn = new OleDbConnection(); conn.ConnectionString = strConn;
注意:连接字符串中IMEX的值使用的是10,如果是1或2,在执行Insert Into语句时就会报“操作必须使用一个可更新的查询”的错误。
在dataGridView1中显示Excel文件中的所有表的信息
DataTable oleDt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); dataGridView1.DataSource = oleDt; dataGridView1.Show();
向"Sheet1"表中插入几条数据,访问Excel的表的时候需要在表名后添加"$"符号,Insert语句可以不指定列名
OleDbCommand cmd = null; try { //向"Sheet1"表中插入几条数据,访问Excel的表的时候需要在表名后添加"$"符号,Insert语句可以不指定列名 cmd = new OleDbCommand("Insert Into [Sheet1$] Values('abc', 'bac', '0', '123456', 'test','测试','aa')", conn);//(A,B,C,D,E,F,G) cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery(); } catch (System.Exception ex) { textBox1.Text += ("插入数据失败:" + ex.Message); textBox1.Text += ("\r\n"); }
在dataGridView2中显示表"Sheet1"的内容,访问Excel的表的时候需要在表名后添加"$"符号
cmd = new OleDbCommand("Select * From [Sheet1$]", conn); OleDbDataAdapter adp = new OleDbDataAdapter(cmd); DataSet ds = new DataSet(); adp.Fill(ds); dataGridView2.DataSource = ds.Tables[0];
遍历Schema的内容
DataTable dt = conn.GetSchema(); for (int i = 0; i < dt.Columns.Count; i++) { textBox1.Text += dt.Columns[i].Caption; if (i + 1 < dt.Columns.Count) { textBox1.Text += ","; } } for (int j = 0; j < dt.Rows.Count; j++) { for (int i = 0; i < dt.Columns.Count; i++) { if (dt.Rows[j][dt.Columns[i]] != null) { textBox1.Text += dt.Rows[j][dt.Columns[i]].ToString(); } else { textBox1.Text += "null"; } if (i + 1 < dt.Columns.Count) { textBox1.Text += ","; } } textBox1.Text += ("\r\n"); }
关闭Excel数据连接
if (conn.State != ConnectionState.Closed) { try { conn.Close(); } catch (System.Exception ex) { textBox1.Text += ("关闭Excel数据连接:" + ex.Message); textBox1.Text += ("\r\n"); } }
打开文件目录
System.Diagnostics.Process.Start("explorer.exe", AppDomain.CurrentDomain.BaseDirectory);
以上就是C#创建Excel文件并将数据导出到Excel文件的示例代码详解(图)的详细内容,更多请关注php中文网其它相关文章!
Excel 控件Spire.XLS V7.12.76发布 | 支持将Excel文件保存到Excel2016格式
Spire.XLS 7.12.76 更新
- 支持将Excel文件保存到Excel2016格式
新功能
- Spire.XLS支持将文件保存到Excel2016格式。
修复
- 修复在使用CalculateAllValue()方法时导致XmlException的问题。
- 修复导致公式错误结果的问题,而计算机将该地区设置为法国,语言为法语。
- 修复导致警告消息的问题“我们发现某些内容的问题...您希望我们尽可能多地尝试恢复?” 打开保存的文件时。
- 修复缩放插入图像时造成图像大小错误的问题。
- 修复加载.xlsm文件时导致FormatException的问题。
点击下载Spire.XLS 7.12.76
java jxl将数据库中数据导出为excel
package demo;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
* 将数据库里面的内容导入到excel中,可以分页
* 用到jxl.jar ojdbc.jar
* @author gr
*
*/
public class ExcelImportDemo {
static ResultSet rs = null;
static ResultSetMetaData rsData = null;
static int sheetIndex = 0; // 计数器,起始为0
static int perPageSize = 60000;// excel2003每张表最大为65536行
static String fileName = "text.xls";// 新建的表格名称
static String URL = "jdbc:oracle:thin:@192.168.0.1:1521:orcl";// 数据库IP地址
static String DriverName = "oracle.jdbc.driver.OracleDriver";
static String username = "test";// 用户
static String password = "test";// 密码
public static void main(String[] args) throws Exception {
connectOracle();
}
static void connectOracle() throws SQLException, ClassNotFoundException {
Connection conn = null;
Class.forName(DriverName);
long begintime = System.currentTimeMillis();
try {
System.out.println("数据库连接开始:" + new Date(System.currentTimeMillis()));
conn = DriverManager.getConnection(URL, username, password);
Statement state = conn.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql = "select * from pnr_user";
rs = state.executeQuery(sql);
rsData = rs.getMetaData();// 获得所需要的rs信息
rs.last();
int size = rs.getRow();// 列数
rs.beforeFirst();
int sheetsize = size / perPageSize + 1;// sheetsize是sheet的总页数
writeexcel(rs);// 新建一个excel,并且写入第一张表,每次只能写一张表
for (int i = 1; i < sheetsize; i++) {
System.out.println(2);
updateexcel(rs);// 写入后面的后面的表
}
} catch (Exception e) {
System.out.println("数据库连接错误");
e.printStackTrace();
} finally {
conn.close();
System.out.println("数据库连接关闭!用时:"
+ (System.currentTimeMillis() - begintime) + "ms");
}
}
static void writeexcel(ResultSet rs) throws IOException, Exception,
WriteException {
WritableWorkbook book = Workbook.createWorkbook(new File(fileName));
WritableSheet sheet = book.createSheet("第" + (sheetIndex + 1) + "页",
sheetIndex);
int i = 1;// 每一页设为第一行
while (rs.next()) {
for (int j = 1; j <= rsData.getColumnCount(); j++) {
Label label = new Label(j - 1, i, rs.getString(j) == null ? ""
: rs.getString(j).toString());
if (i == 1) {// 标题只加载第一次
Label titleLabel = new Label(j - 1, 0, rsData
.getColumnName(j));
sheet.addCell(titleLabel);
}
sheet.addCell(label);
}
i++;
if (i > perPageSize) {
break;
}
}
sheetIndex++;
book.write();
book.close();
}
static void updateexcel(ResultSet rs) throws BiffException, IOException,
RowsExceededException, WriteException, SQLException {
Workbook wb = Workbook.getWorkbook(new File(fileName));
WritableWorkbook book = Workbook.createWorkbook(new File(fileName), wb);
WritableSheet sheet = book.createSheet("第" + (sheetIndex + 1) + "页 ",
sheetIndex);
int i = 1;// 每一页设为第一行
while (rs.next()) {
for (int j = 1; j <= rsData.getColumnCount(); j++) {
Label label = new Label(j - 1, i, rs.getString(j) == null ? ""
: rs.getString(j).toString());
if (i == 1) {// 标题只加载第一次
Label titleLabel = new Label(j - 1, 0, rsData
.getColumnName(j));
sheet.addCell(titleLabel);
}
sheet.addCell(label);
}
i++;
if (i > perPageSize) {
break;
}
}
sheetIndex++;
book.write();
book.close();
}
}
今天关于java – 使用jxl将数据添加到Excel文件和java中jxl怎么导入的介绍到此结束,谢谢您的阅读,有关2、java利用jxl实现导出excel表、C#创建Excel文件并将数据导出到Excel文件的示例代码详解(图)、Excel 控件Spire.XLS V7.12.76发布 | 支持将Excel文件保存到Excel2016格式、java jxl将数据库中数据导出为excel等更多相关知识的信息可以在本站进行查询。
本文标签: