我正在使用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个单元格写入单元格?
这会是一个好主意还是你还有什么建议作为解决方案?
我有一个Form,其底部有一个StatusStrip组件.表单具有固定的宽度,不可调整大小.但是,StatusStrip右侧有一个"调整大小三角形"(6个小点).
这给人的印象是窗口可以调整大小.我该如何删除它?
如何使用Java从Oracle表中获取所有列的名称?有没有办法从DatabaseMetaData对象中获取它们?
DatabaseMetaData myDatabaseMetaData = myConnection.getMetaData();
...
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用select语句来获取它们:
Select COLUMN_NAME from user_tab_columns where table_name='MYTABLE'
Run Code Online (Sandbox Code Playgroud)
如果可以从DatabaseMetaData对象获取它们,这两种方法有什么区别?
编辑:发布工作代码(感谢您的答案)
public ArrayList<String> getAllFields(String tableName) {
ArrayList<String> allFields = new ArrayList<String>();
try {
DatabaseMetaData myDatabaseMetaData = myConnection.getMetaData();
ResultSet columnsResultSet = myDatabaseMetaData.getColumns(null, null, tableName, null);
while (columnsResultSet.next()) { allFields.add(columnsResultSet.getString("COLUMN_NAME")); }
} catch (SQLException ex) {
Exceptions.printStackTrace(ex);
}
return allFields;
}
Run Code Online (Sandbox Code Playgroud) 我有一个组件列表
List<Component> components = new List<Component>();
Run Code Online (Sandbox Code Playgroud)
我正在设计一个动态表单框架.我知道即使我知道它们各自是什么类型的组件,也不可能转换为特定组件.如何将组件作为特定类型(例如TextBox,ComboBox)以使用其属性.
例如,我知道第一项components是a ComboBox.我可以把它作为ComboBox使用它吗?
appearance ×1
c# ×1
cells ×1
components ×1
excel ×1
fixed-width ×1
forms ×1
java ×1
jxl ×1
memory ×1
metadata ×1
oracle ×1
statusstrip ×1
vb.net ×1