java 分页导出word_Java导出Word问题

这段代码展示了如何使用Apache POI库来读取Word文档内容。通过检查字节顺序判断是Word 2007还是2003格式,然后分别处理段落内容并导出。此方法适用于Java程序中进行Word文件的处理和内容导出。
摘要由CSDN通过智能技术生成

//使用的是Apache POI

public static String readWord(InputStream ins)throws Exception

{

StringBuffer sRet=new StringBuffer();

byte[] bContent = null;

ByteArrayOutputStream outs = null;

byte[] head = new byte[8];

byte[] bHead = new byte[] {-48, -49, 17, -32, -95, -79, 26, -31};

boolean bFlag = false;

ByteArrayInputStream bis=null;

try {

if(ins==null)

{

throw new Exception("文件流不存在!");

}

outs = new ByteArrayOutputStream();

bContent = new byte[2048];

int j = -1;

while ((j = ins.read(bContent)) != -1)

{

outs.write(bContent, 0, j);

}

outs.flush();

bContent = outs.toByteArray();

outs.close();

for (int i = 0; i < head.length; i++)

{

if (bContent[i] != bHead[i])

{

bFlag = true;

break;

}

}

bis=new ByteArrayInputStream(bContent);

if (bFlag)//word 2007

{

XWPFParagraph xph=null;

XWPFDocument document = new XWPFDocument(bis);

/** 操作Word段落begin */

Iterator it = document.getParagraphsIterator();

while (it.hasNext())

{

xph = it.next();

sRet.append(xph.getParagraphText()+"\n");

}

}

else//word2003

{

HWPFDocument document = new HWPFDocument(bis);

Range bodyRange = document.getRange();

Paragraph ph=null;

// 段落

for (int h = 0; h < bodyRange.numParagraphs(); h++)

{

ph = bodyRange.getParagraph(h);

sRet.append(ph.text());

}

}

} catch (Exception e) {

throw e;

}finally

{

outs.close();

}

return sRet.toString();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中,实现分页导出Excel通常涉及到两个主要步骤:数据分页和将数据写入Excel文件。Apache POI是一个常用库,用于处理Microsoft Office格式的文档,包括Excel。以下是一个简单的示例,展示了如何使用Apache POI进行分页导出Excel: 1. **数据分页**: - 首先,你需要有一个数据源,如列表或数据库查询结果。例如,如果你的数据在`List<YourDataModel>`中,可以计算每页的大小(比如10条记录)并使用`Collections`或数据库API来获取相应页的数据。 ```java List<YourDataModel> dataList = // 获取数据源 int pageSize = 10; int currentPage = 1; // 假设用户选择当前页 int startIndex = (currentPage - 1) * pageSize; List<YourDataModel> pageData = dataList.subList(startIndex, startIndex + pageSize); ``` 2. **创建Excel工作簿和工作表**: - 使用`HSSFWorkbook`创建一个新的Excel工作簿,`HSSFSheet`创建工作表。 ```java HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("Sheet1"); ``` 3. **写入数据到Excel**: - 使用`Row`对象表示行,`Cell`对象表示单元格,将分页数据写入Excel。 ```java Row headerRow = sheet.createRow(0); // 创建表头行 // 填充表头 for (YourDataModel.Field field : YourDataModel.Fields.values()) { Cell cell = headerRow.createCell(field.getIndex()); cell.setCellValue(field.getName()); } for (YourDataModel data : pageData) { Row row = sheet.createRow(sheet.getLastRowNum() + 1); // 创建新行 for (YourDataModel.Field field : data.getFieldValues()) { Cell cell = row.createCell(field.getIndex()); cell.setCellValue(field.getValue()); } } ``` 4. **保存Excel文件**: - 最后,将工作簿写入磁盘文件。 ```java try (FileOutputStream fileOut = new FileOutputStream("output.xlsx")) { workbook.write(fileOut); } catch (IOException e) { e.printStackTrace(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值