GVKun编程网logo

java – 使用jxl将数据添加到Excel文件(java中jxl怎么导入)

27

在本文中,我们将带你了解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怎么导入)

java – 使用jxl将数据添加到Excel文件(java中jxl怎么导入)

我正在使用jxl创建一个excel文件.首先应该只包含一些关于样式的格式和信息.然后,每当有人向其添加新数据时,都应该更新它.
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文件,仅包含合并的单元格.

如何介绍修改?

解决方法

既然你正在操作一个不是w2类的成员的WritableWorkbook对象,你不应该让你的modify()方法不是void而是返回一个WritableWorkbook吗?

在我看来,当你调用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表

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文件的示例代码详解(图)

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=&#39;Excel 12.0; HDR=yes; IMEX=10&#39;";
            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(&#39;abc&#39;, &#39;bac&#39;, &#39;0&#39;, &#39;123456&#39;, &#39;test&#39;,&#39;测试&#39;,&#39;aa&#39;)", 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格式

Excel 控件Spire.XLS V7.12.76发布 | 支持将Excel文件保存到Excel2016格式

图片1

Spire.XLS 7.12.76 更新

  • 支持将Excel文件保存到Excel2016格式

新功能

  • Spire.XLS支持将文件保存到Excel2016格式。

修复

  • 修复在使用CalculateAllValue()方法时导致XmlException的问题。
  • 修复导致公式错误结果的问题,而计算机将该地区设置为法国,语言为法语。
  • 修复导致警告消息的问题“我们发现某些内容的问题...您希望我们尽可能多地尝试恢复?” 打开保存的文件时。
  • 修复缩放插入图像时造成图像大小错误的问题。
  • 修复加载.xlsm文件时导致FormatException的问题。

点击下载Spire.XLS 7.12.76

图片1

java jxl将数据库中数据导出为excel

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等更多相关知识的信息可以在本站进行查询。

本文标签: