IF KEYWORD_SET(MaxColumn) THEN BEGIN IF (MaxColumn LT 1) Then begin message, 'MaxColumn Must be the positve Integer number.' end MaxCoL=MaxColumn ENDIF else begin MaxCoL=20;最大列默认为20列 END ;----------------------------------------- File="D:\Desktop\drought_characteristic\2022_output\file\1111.txt" FTresult = FILE_TEST(File) if (FTresult NE 1) then begin message, 'File Not Found!' endif ;----------------------------------------- ;初始化数据 Data=make_array(1,1,/DOUBLE);文件中没有数据时就返回此值 ;----------------------------------------- fs=fileread(file) ;----------------------------------------- ;最多MaxCoL列nn行 if (n_elements(fs) GT 0) then begin ;----------------------------------------- FileData=make_array(MaxCoL,n_elements(fs),/DOUBLE) LineCount=make_array(1,n_elements(fs),/UINT) ;=========================================================== for n=0L,n_elements(fs)-1 DO BEGIN LineStr=fs[n]; rbool=StringToDoubleArray(LineStr,DoubleArray,Count); ;----------------------------------------- if ((rbool eq 1) && (Count GT 0))then begin MinColSet=make_array(2,1,/DOUBLE) MinColSet[0]=MaxCoL; MinColSet[1]=Count; ;----------------------------------------- for LC=0L,min(MinColSet)-1 Do begin FileData[LC,n]=DoubleArray[LC]; endfor ;----------------------------------------- LineCount[n]=min(MinColSet) endif ;----------------------------------------- endfor ;=========================================================== validrow=where(LineCount GT 0) ;----------------------------------------- if (max(LineCount) GT 1)AND(n_elements(validrow) GT 1) then begin Data=FileData[0:(max(LineCount)-1),validrow]; endif ;----------------------------------------- endif翻译一下每行代码
时间: 2023-06-26 11:03:21 浏览: 56
这段代码是用来读取文件中的数据并将其存储到数组中的。
第一部分是设置最大列数的条件语句,如果MaxColumn小于1,则输出错误信息;否则将MaxCoL设置为MaxColumn。
接着是对文件的读取和测试,如果文件不存在则输出错误信息。
然后是初始化数据,将Data设置为一个1x1的DOUBLE类型数组,用于处理文件中没有数据的情况。
接下来是对文件数据的处理,首先将文件内容存储到fs变量中,然后通过循环逐行读取文件内容。对于每一行,将其转换为DoubleArray数组,并确定其有效列数。如果有效列数大于0,则将数据存储到FileData数组中,并记录该行的有效列数到LineCount数组中。循环结束后,通过where函数找到LineCount中大于0的元素所对应的行,将这些行的数据存储到Data数组中。
最后,如果Data数组中有数据,则将其返回。
相关问题
try { File excelFile = FileUtil.loadTemp(excel.getOriginalFilename(), excel.getInputStream()); Workbook workbook = new Workbook(excelFile.getAbsolutePath()); Worksheet firstWorksheet = workbook.getWorksheets().get(0); firstWorksheet.autoFitRows(); firstWorksheet.autoFitColumns(); if (image != null) { File imageFile = FileUtil.loadTemp(image.getOriginalFilename(), image.getInputStream()); int pictureIndex = firstWorksheet.getPictures().add(1, 1, imageFile.getAbsolutePath()); int maxRow = firstWorksheet.getCells().getMaxDataRow(); int maxColumn = firstWorksheet.getCells().getMaxDataColumn(); Picture picture = firstWorksheet.getPictures().get(pictureIndex); int pictureTopRow = maxRow + 2; int pictureLeftColumn = 0; picture.setUpperLeftRow(pictureTopRow); picture.setUpperLeftColumn(pictureLeftColumn); double rowHeight = picture.getHeightInch() * 72; if (rowHeight > 409) { rowHeight = 409; } firstWorksheet.getCells().setRowHeight(pictureTopRow, rowHeight); double pictureWidth = picture.getWidthInch() * 72; int pictureRightColumn = pictureLeftColumn + (int) (pictureWidth / 8.43); for (int column = pictureLeftColumn; column <= pictureRightColumn; column++) { firstWorksheet.getCells().setColumnWidth(column, 8.43); } } File tempFile = FileUtil.newTempFile(DateUtil.today().concat(ExcelTypeEnum.XLSX.getValue())); workbook.save(tempFile.getAbsolutePath(), com.aspose.cells.SaveFormat.XLSX); FileInputStream stream = new FileInputStream(tempFile); FileUtil.downFile(response, tempFile.getName(), stream); } catch (Exception e) { log.error("业务异常:{}", e.getMessage()); MessageException.throwMsg("业务异常"); } 我需要设置表格自适应宽度
在上述代码中,已经使用了 `firstWorksheet.autoFitRows();` 和 `firstWorksheet.autoFitColumns();` 来自适应表格的行高和列宽。如果你想要更精确地控制某一列或某几列的宽度,可以使用 `setColumnWidth` 方法,示例如下:
```
// 设置第1列的宽度为20
firstWorksheet.getCells().setColumnWidth(0, 20);
// 设置第2列到第5列的宽度为15
for (int column = 1; column <= 4; column++) {
firstWorksheet.getCells().setColumnWidth(column, 15);
}
```
可以根据需要自己调整列宽大小。注意,这里的单位是字符宽度,不是像素或者英寸。
C语言:编写一个求二维数组每列元素最大值的函数,函数首部:void maxColumn(int a[][4],int max[4])
以下是求二维数组每列元素最大值的C语言函数代码:
```
void maxColumn(int a[][4], int max[4]) {
int i, j;
for (i = 0; i < 4; i++) {
max[i] = a[0][i];
for (j = 1; j < 4; j++) {
if (a[j][i] > max[i]) {
max[i] = a[j][i];
}
}
}
}
```
函数接受一个二维数组 `a` 和一个长度为 4 的整型数组 `max` 作为参数,其中 `a` 的行数可以是任意正整数,但必须有 4 列。函数会遍历数组 `a` 的每一列,计算出每列中的最大值并存储到数组 `max` 中对应的位置。在函数结束时,数组 `max` 中存储的就是每列的最大值。
阅读全文