有没有办法锁定某些单元格不被用户编辑?我尝试过以下方法:
WritableCellFormat cf = new WritableCellFormat();
cf.setLocked(true);
sheet.addCell(new Number(col, row, value, cf));
Run Code Online (Sandbox Code Playgroud)
但是,这似乎对生成的电子表格没有任何影响,即在Excel中打开文件时仍可以更改单元格内容.
我试图在将其转储到数据库之前使用java验证excel文件.
这是我的代码片段,它会导致错误.
try {
fis = new FileInputStream(file);
wb = new XSSFWorkbook(fis);
XSSFSheet sh = wb.getSheet("Sheet1");
for(int i = 0 ; i < 44 ; i++){
XSSFCell a1 = sh.getRow(1).getCell(i);
printXSSFCellType(a1);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.ArrayList.<init>(Unknown Source)
at java.util.ArrayList.<init>(Unknown Source)
at org.apache.xmlbeans.impl.values.NamespaceContext$NamespaceContextStack.<init>(NamespaceContext.java:78)
at org.apache.xmlbeans.impl.values.NamespaceContext$NamespaceContextStack.<init>(NamespaceContext.java:75)
at org.apache.xmlbeans.impl.values.NamespaceContext.getNamespaceContextStack(NamespaceContext.java:98)
at org.apache.xmlbeans.impl.values.NamespaceContext.push(NamespaceContext.java:106)
at org.apache.xmlbeans.impl.values.XmlObjectBase.check_dated(XmlObjectBase.java:1273) …
Run Code Online (Sandbox Code Playgroud) 是否可以从excell工作表中读取单元格的格式并确定哪些单词是粗体还是斜体?我可以读取和写入单元格,我也知道JExcel可以写入格式化的单元格.在格式化的单元格中,我的意思是文本是斜体或粗体.
是否有可能读取单元格数据并确定哪些单词是粗体?例如,我将在单元格中有这个:
" 来自一个excel小区的示例文本"
我想知道字符串"excel cell"是粗体,字符串"sample"是Italic.这在JExcel中是否可行,如果不是,我将如何在Java中执行此操作?有人可以推荐一个API吗?也许更好的方法是削减xml文件.
我正在使用JXL编写50000行和30列的excel文件.我的代码看起来像这样:
for(int j = 0; j <countOfRows; j ++){
myWritableSheet.addCell(new Label(0, j, myResultSet.getString(1), myWritableCellFormat));
myWritableSheet.addCell(new Label(1, j, myResultSet.getString(2), myWritableCellFormat));
.....
.....
Run Code Online (Sandbox Code Playgroud)
}
在写入单元格时,程序变得越来越慢
最后在25000行附近我收到以下错误:
线程"Thread-3"中的异常java.lang.OutOfMemoryError:jxl.write.biff.brit.WritableSheetImpl.addCell上的jxl.write.biff.WritableSheetImpl.getRowRecord(WritableSheetImpl.java:984)中的Java堆空间(WritableSheetImpl.java:951 )在KLL.ConverterMainFrame $ exportToXLSBillRightsThread.run(ConverterMainFrame.java:6895)
Java中处理内存总是很困难.
在这种情况下,它似乎是jxl的问题.
有没有办法写入文件,清除内存并每1000个单元格写入单元格?
这会是一个好主意还是你还有什么建议作为解决方案?
这个库之间的相关区别是什么?也可以告诉我有关此产品的许可证的任何人吗?
我需要生成大文件 .xlsx 文件。到现在为止,我使用 jxl lib in for .xls 和使用 jxl.write.WritableCellFormat 的格式化头文件。
我需要使用带有 UTF-8 编码的 lib JXL 读取 excel 文件。
我已经尝试使用 WorkbookSettings 如下:
WorkbookSettings ws = new WorkbookSettings();
ws.setEncoding("UTF-8");
Workbook workbook = Workbook.getWorkbook(fileInputStream,ws);
Run Code Online (Sandbox Code Playgroud)
但是没有用。
我还尝试使用如下字节将输出字符串转换为 utf-8:
Charset.forName("UTF-8").encode(myString);
String value = new String(myString.getBytes("UTF-8"));
Run Code Online (Sandbox Code Playgroud)
但仍然不起作用:
这是我的输出:
你能帮助我吗?
我们可以在jxls中定义局部变量,可用于设置列的递增计数.
例如:考虑以下内容
<jx:forEach items="${myList}" var="myVar">
-- i need to define a local integer variable here which will have an initial value as 0
-- and i will increment it and display in the output xls's first column
</jx:forEach>
Run Code Online (Sandbox Code Playgroud)
基本上我的要求是在jxls代码中有一些局部变量声明,我将增加并显示在xml中.
欢迎任何其他替代方案.
此致,拉胡尔