在sheet对象中读写内容的函数,只有四个。定位单元格我们同样可以使用序号(从1开始)或使用区域字符串如“B4” 表示第4行,第2列的单元格。
函数名 | 说明 |
setCellValue | 读取已有工作表,不存在则创建一个新工作表 |
getCellValue | 获取单元格的值 |
getTable | 读取区域的内容并返回一个二维的table |
setTable | 从指定单元格位置开始,将二维的table写入 |
1.setCellValue写入内容,除了写入单个单元格内容还可以整行或整列写入:
import npoi //导入库
//当前目录如果存在文件则读取,不存在则创建文件,返回工作薄对象
workBook = npoi("/内容.xlsx")
//创建工作表
sheet = workBook.sheet("工作表1")
//在行1,列1写入数字10
sheet.setCellValue(1,1,10)
//在B1(列2,行1)写入字符串 "你好"
sheet.setCellValue("B1","你好")
//从B2(列2,行2)开始,同一行连续写入table的内容
tab = {5,6,7,8,"字符串",tostring(time.now())}
sheet.setCellValue("B2",tab)
//从B3(列2,行3)开始,同一列连续写入table的内容
tab2 = {9,10,11,12,13}
sheet.setCellValue("B3",tab2,2) //第三个参数2,表示同一列写入
workBook.save() //保存到文件
写入后效果:
2.getCellValue读取单元格内容,如果想读取整行或整列的内容,我们需要知道最后行sheet.lastRowNum的序号和最后单元格row.lastCellNum的序号。
import console
import npoi //导入库
//当前目录如果存在文件则读取,不存在则创建文件,返回工作薄对象
workBook = npoi("/内容.xlsx")
//获取工作表
sheet = workBook.sheet("工作表1")
//读取单个单元格内容
console.log("A1的内容:",sheet.getCellValue(1,1))
console.log("B1的内容:",sheet.getCellValue("B1"))
//获取行对象
row = sheet.row(2)
//行最后一个单元格序号
n = row.lastCellNum
//读取从B2开始到行结束的数据
console.writeText("B2整行内容:",'\t')
for(i=2;n;1){
console.writeText(sheet.getCellValue(2,i),'\t')
}
//写入空行
console.log()
console.log()
console.log("下面是从B3开始,整列的内容:")
//结束的行序号
r = sheet.lastRowNum
//读取从B3(列2,行3)开始,同一列连续写入的内容
for(i=3;r;1){
console.log(sheet.getCellValue(i,2))
}
workBook.save() //保存到文件
console.pause()
效果如下:
3.有时候我们要读取某区域的数据为一个table,方便我们导入到数据库或进行其它操作,就要用到getTable ,参数是“初始区域”和“结束区域”
import console
import npoi //导入库
//当前目录如果存在文件则读取,不存在则创建文件,返回工作薄对象
workBook = npoi("/内容.xlsx")
//获取工作表
sheet = workBook.sheet("工作表1")
console.log("读取A1到B5的内容:")
//没有值的单元格为空字符串
console.dump(sheet.getTable("A1","B5"))
workBook.save() //保存到文件
console.pause()
效果图如下:
4.最后,我们可以使用setTable从指定的区域写入二维的内容
import npoi //导入库
//当前目录如果存在文件则读取,不存在则创建文件,返回工作薄对象
workBook = npoi("/内容.xlsx")
//获取工作表
sheet = workBook.sheet("工作表1")
//定义要写入的二维table内容
tab = {
{"a","b","c","d"},
{11,12,13,14}
}
//从C4开始写入
sheet.setTable("C4",tab)
workBook.save() //保存到文件
效果图: