java excel 列_java实现excel行列转换

根据本人自身的需求,周末写了个excel行列转换代码,可处理一定量的数据。

package com.lfn.excel;

import java.io.File;

import java.io.IOException;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

import jxl.read.biff.BiffException;

import jxl.write.WritableSheet;

import jxl.write.WritableWorkbook;

import jxl.write.WriteException;

import jxl.write.biff.RowsExceededException;

/**

* 此类只能用于excel 2003的读取

* @author Administrator

*

*/

public class ChangeRowConlum {

/**

* @param l,表示截断excel的多少列为一行

*

*

*/

public static void rowcolumn(int l , String inputfilename , String outputfilename)

{

Workbook wb = null;

WritableSheet ws = null;

jxl.write.Label lable = null ;

WritableWorkbook wwb = null;

//大的第二行的插入行的起始位置

int starth = 0;

int  c = 0;

try {

wb = Workbook.getWorkbook(new File(inputfilename));

} catch (BiffException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

if(wb == null)

{

return;

}

Sheet[] sheet = wb.getSheets();//获取工作簿表对象

if(sheet!=null && sheet.length > 0)

{

//创建一个工作簿对象

try {

wwb = Workbook.createWorkbook(new File(outputfilename));

if(wwb != null)

{

//创建一个可写入的表,第一个是工作簿表名,第二个是工作簿的位置

ws = wwb.createSheet("sheet1", 0);

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

for(int i = 0 ; i < sheet.length ; i++)//这里一般是只有一张sheet

{

int rownum = sheet[i].getRows();//工作簿对象的行数

int column = sheet[i].getColumns();

for(int r = 0; r < rownum ; r++)

{

//得到当前行的所有单元格

Cell[] cell = sheet[i].getRow(r);

if(cell != null && cell.length > 0)

{

//写入excel文件的行数

int hang = (r+1)*(((column-1)/8)+1);

//插入位置应该接着上次插入的最后一行的下一行开始

for(int h = starth ; h < hang ; h ++)

{

//写入文件的行数

for(int ll = 0 ; ll < l ; ll++)

{

if(ll == 0)

{

lable = new jxl.write.Label(ll, h,cell[0].getContents());

}else{

c++;

//                                            System.out.println("----"+c);

//                                            System.out.println("===="+cell.length);

if(c>=cell.length)

{

//                                                continue;

lable = new jxl.write.Label(ll, h,"0");

c=0;

}else{

lable = new jxl.write.Label(ll, h,cell[c].getContents());

System.out.println("----"+cell[c].getContents());

}

}

try {

ws.addCell(lable); //添加到excel

} catch (RowsExceededException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (WriteException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

starth = hang;//把最后一行行号赋给第二个大行的插入位置

System.out.println("starh***"+starth);

}

}

}

}

try {

wwb.write();//写入excel文件

wwb.close();

}

catch (WriteException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

测试类:

package com.lfn.excel;

import java.io.File;

public class ReadExcelFileTest {

/**

* @param args

*/

public static void main(String[] args) {

ChangeRowConlum.rowcolumn(9, "f:\\111.xls", "f:\\26.xls");

}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++中处理Excel文件数据,可以使用第三方库来实现,如LibXL、ExcelFormat等。这些库提供了一些API来读取和写入Excel文件。 下面是一个使用LibXL库的示例代码来读取Excel文件数据: ```cpp #include <iostream> #include "libxl.h" int main() { libxl::Book* book = xlCreateBook(); // 创建一个新的Excel文件 if (book) { if (book->load("example.xlsx")) { // 打开要读取的Excel文件 libxl::Sheet* sheet = book->getSheet(0); // 获取第一个工作表 if (sheet) { int rowCount = sheet->lastRow(); // 获取行数 int colCount = sheet->lastCol(); // 获取数 for (int row = 0; row <= rowCount; ++row) { for (int col = 0; col <= colCount; ++col) { libxl::CellType cellType = sheet->cellType(row, col); // 获取单元格类型 if (cellType == libxl::CELLTYPE_NUMBER) { double value = sheet->readNum(row, col); // 读取数值类型单元格的值 std::cout << value << " "; } else if (cellType == libxl::CELLTYPE_STRING) { const char* value = sheet->readStr(row, col); // 读取字符串类型单元格的值 std::cout << value << " "; } else { std::cout << " "; } } std::cout << std::endl; } } } book->release(); // 释放资源 } return 0; } ``` 这段代码使用LibXL库打开名为"example.xlsx"的Excel文件,并逐行逐地读取单元格的值,输出到控制台。 请注意,您需要先下载并安装LibXL库,并在编译过程中链接对应的库文件。另外,您需要根据实际情况修改代码以适应您的Excel文件结构和数据类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值