简体   繁体   English

如何使用JXL创建新的Excel文件?

[英]How Do I Create a New Excel File Using JXL?

我正在尝试使用jxl创建一个新的Excel文件,但我很难在他们的API文档和在线查找示例。

After messing around awhile longer I finally found something that worked and saw there still wasn't a solution posted here yet, so here's what I found: 经过一段时间的混乱后,我终于发现了一些有用的东西,看到这里还没有找到解决方案,所以这就是我发现的:

try {
    String fileName = "file.xls";
    WritableWorkbook workbook = Workbook.createWorkbook(new File(fileName));
    workbook.createSheet("Sheet1", 0);
    workbook.createSheet("Sheet2", 1);
    workbook.createSheet("Sheet3", 2);
    workbook.write();
    workbook.close();
} catch (WriteException e) {

}

I know that it's a very old question. 我知道这是一个非常古老的问题。 However, I think I can contribute with an example that also adds the cell values: 但是,我想我可以提供一个也添加单元格值的示例:

/**
 *
 * @author Almir Campos
 */
public class Write01
{
    public void test01() throws IOException, WriteException
    {
        // Initial settings
        File file = new File( "c:/tmp/genexcel.xls" );
        WorkbookSettings wbs = new WorkbookSettings();
        wbs.setLocale( new Locale( "en", "EN" ) );
        // Creates the workbook
        WritableWorkbook wwb = Workbook.createWorkbook( file, wbs );
        // Creates the sheet inside the workbook
        wwb.createSheet( "Report", 0 );
        // Makes the sheet writable
        WritableSheet ws = wwb.getSheet( 0 );
        // Creates a cell inside the sheet
        //CellView cv = new CellView();
        Number n;
        Label l;
        Formula f;
        for ( int i = 0; i < 10; i++ )
        {
            // A
            n = new Number( 0, i, i );
            ws.addCell( n );
            // B
            l = new Label( 1, i, "by" );
            ws.addCell( l );
            // C
            n = new Number( 2, i, i + 1 );
            ws.addCell( n );
            // D
            l = new Label( 3, i, "is" );
            ws.addCell( l );
            // E
            f = new Formula(4, i, "A" + (i+1) + "*C" + (i+1) );
            ws.addCell( f );
        }
        wwb.write();
        wwb.close();
    }
}

First of all you need to put Jxl Api into your java directory , download JXL api from http://www.andykhan.com/ extract it,copy jxl and paste like C:\\Program Files\\Java\\jre7\\lib\\ext. 首先,您需要将Jxl Api放入java目录,从http://www.andykhan.com/下载JXL api,解压缩,复制jxl并粘贴如C:\\ Program Files \\ Java \\ jre7 \\ lib \\ ext。

try {
    String fileName = "file.xls";
    WritableWorkbook workbook = Workbook.createWorkbook(new File(fileName));
    WritableSheet writablesheet1 = workbook.createSheet("Sheet1", 0);
    WritableSheet writablesheet2 = workbook.createSheet("Sheet2", 1);
    WritableSheet writablesheet3 = workbook.createSheet("Sheet3", 2);
    Label label1 = new Label("Emp_Name");
    Label label2 = new Label("Emp_FName");
    Label label3 = new Label("Emp_Salary");
    writablesheet1.addCell(label1);
    writablesheet2.addCell(label2);
    writablesheet3.addCell(label3);
    workbook.write();
    workbook.close();
} catch (WriteException e) {

}

Not sure if you need to stick with JXL, but the best library for handling Excel files is Apache's POI HSSF . 不确定您是否需要坚持使用JXL,但处理Excel文件的最佳库是Apache的POI HSSF

I think there are plenty of examples on the website I provided, but if you need further assistence, let me know. 我认为我提供的网站上有很多例子,但如果你需要进一步的帮助,请告诉我。 I may have a few examples laying around. 我可能会有几个例子。

Just out of curiosity, POI stands for Poor Obfuscation Interface and HSSF is Horrible SpreadSheet Format. 出于好奇,POI代表可怜的混淆接口,HSSF是可怕的SpreadSheet格式。 You see how much Apache loves Microsoft Office formats :-) 你看多少Apache喜欢Microsoft Office格式:-)

public void exportToExcel() {
    final String fileName = "TodoList2.xls";

    //Saving file in external storage
    File sdCard = Environment.getExternalStorageDirectory();
    File directory = new File(sdCard.getAbsolutePath() + "/javatechig.todo");

    //create directory if not exist
    if(!directory.isDirectory()){
        directory.mkdirs();
    }

    //file path
    File file = new File(directory, fileName);

    WorkbookSettings wbSettings = new WorkbookSettings();
    wbSettings.setLocale(new Locale("en", "EN"));
    WritableWorkbook workbook;


    try {
        workbook = Workbook.createWorkbook(file, wbSettings);
        //Excel sheet name. 0 represents first sheet
        WritableSheet sheet = workbook.createSheet("MyShoppingList", 0);



        Cursor  cursor = mydb.rawQuery("select * from Contact", null);

        try {
            sheet.addCell(new Label(0, 0, "id")); // column and row
            sheet.addCell(new Label(1, 0, "name"));
            sheet.addCell(new Label(2,0,"ff "));
            sheet.addCell(new Label(3,0,"uu"));
            if (cursor.moveToFirst()) {
                do {
                    String title =cursor.getString(0) ;
                    String desc = cursor.getString(1);
                    String name=cursor.getString(2);
                    String family=cursor.getString(3);

                    int i = cursor.getPosition() + 1;
                    sheet.addCell(new Label(0, i, title));
                    sheet.addCell(new Label(1, i, desc));
                    sheet.addCell(new Label(2,i,name));
                    sheet.addCell(new Label(3,i,family));
                } while (cursor.moveToNext());
            }
            //closing cursor
            cursor.close();
        } catch (RowsExceededException e) {
            e.printStackTrace();
        } catch (WriteException e) {
            e.printStackTrace();
        }
        workbook.write();
        try {
            workbook.close();
        } catch (WriteException e) {
            e.printStackTrace();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM