用c++写一个可以读与excel文件中指定sheet的内容
最好能在源程序中修改do{ifstreammyfile;myfile.open("xanadu_cfg_registers.xlsx");myfile.open("BAN...
最好能在源程序中修改
do {
ifstream myfile;
myfile.open("xanadu_cfg_registers.xlsx");
myfile.open("BANK0_UI_REGS");
cout << "Whcih signalName you want to search?" << endl;
cin >> search;
while (myfile >> row)
{
if (row[0] == search)
{
int i;
i = convetHexStrToInt(row[10]);
cout << "signalName: " << row[0] << "\n"<<endl;
}
}
cout << "Do you want to keep search? (y/n)";
cin >> b;
if (b == 'y')
a = true;
else
{
a = false;
break;
}
myfile.close();
} while (a == true);
这是我写出来的初始文件,可以对只拥有一个sheet的excel进行search。在这个的基础上我该如何修改在打开excel之后进入制定的sheet而不是默认的第一个sheet呢?谢谢大神!! 展开
do {
ifstream myfile;
myfile.open("xanadu_cfg_registers.xlsx");
myfile.open("BANK0_UI_REGS");
cout << "Whcih signalName you want to search?" << endl;
cin >> search;
while (myfile >> row)
{
if (row[0] == search)
{
int i;
i = convetHexStrToInt(row[10]);
cout << "signalName: " << row[0] << "\n"<<endl;
}
}
cout << "Do you want to keep search? (y/n)";
cin >> b;
if (b == 'y')
a = true;
else
{
a = false;
break;
}
myfile.close();
} while (a == true);
这是我写出来的初始文件,可以对只拥有一个sheet的excel进行search。在这个的基础上我该如何修改在打开excel之后进入制定的sheet而不是默认的第一个sheet呢?谢谢大神!! 展开
1个回答
展开全部
/**
*
* <p>标题:readExcel</p>
* <p>描述:读取Excel文件数据</p>
* @param excelfilePath Excel文件路径
* @param startRow 开始行
* @param startCol 开始列
* @return List<ArrayList<String>>
* @throws IOException
* @throws BiffException
*/
public List<Map<String, Object>> readExcel(String excelfilePath,int startRow, int startCol)
throws IOException, BiffException {
// 读取xls文件
InputStream ins = new FileInputStream(excelfilePath);
// 设置读文件编码
WorkbookSettings setEncode = new WorkbookSettings();
setEncode.setEncoding("UTF-8");
Workbook rwb = Workbook.getWorkbook(ins, setEncode);
List<Map<String, Object>> alldata = new ArrayList<Map<String, Object>>();
Map<String, Object> data = null;
alldata.clear();
// 获得当前Excel表共有几个sheet
Sheet[] sheets = rwb.getSheets();
// 获得表数
int pages = sheets.length;
// 将excel表中的数据读取出来
// 在从Excel中读取数据的时候不需要知道每个sheet有几行,有那多少列
for (int i = 0; i < pages; i++) {
//这里读取excel中每个sheet的数据,Sheet sheet = rwb.getSheet(i); 读取第二个sheet就是getSheet(1);
Sheet sheet = rwb.getSheet(i);
int cols = sheet.getColumns(); // 列
// 读取每一行对应的列数目
// 循环读取每一行的全部列数目的内容
int rows = sheet.getRows(); // 行
for (int r = startRow; r < rows; r++) {
data = new HashMap<String, Object>();
// 行循环,Excel的行列是从(0,0)开始
for (int c = startCol; c < cols; c++) {
Cell excelRows = sheet.getCell(c, r);
data.put("bgbh", excelRows.getContents());
}
alldata.add(data);
}
}
ins.close();
return alldata;
}
*
* <p>标题:readExcel</p>
* <p>描述:读取Excel文件数据</p>
* @param excelfilePath Excel文件路径
* @param startRow 开始行
* @param startCol 开始列
* @return List<ArrayList<String>>
* @throws IOException
* @throws BiffException
*/
public List<Map<String, Object>> readExcel(String excelfilePath,int startRow, int startCol)
throws IOException, BiffException {
// 读取xls文件
InputStream ins = new FileInputStream(excelfilePath);
// 设置读文件编码
WorkbookSettings setEncode = new WorkbookSettings();
setEncode.setEncoding("UTF-8");
Workbook rwb = Workbook.getWorkbook(ins, setEncode);
List<Map<String, Object>> alldata = new ArrayList<Map<String, Object>>();
Map<String, Object> data = null;
alldata.clear();
// 获得当前Excel表共有几个sheet
Sheet[] sheets = rwb.getSheets();
// 获得表数
int pages = sheets.length;
// 将excel表中的数据读取出来
// 在从Excel中读取数据的时候不需要知道每个sheet有几行,有那多少列
for (int i = 0; i < pages; i++) {
//这里读取excel中每个sheet的数据,Sheet sheet = rwb.getSheet(i); 读取第二个sheet就是getSheet(1);
Sheet sheet = rwb.getSheet(i);
int cols = sheet.getColumns(); // 列
// 读取每一行对应的列数目
// 循环读取每一行的全部列数目的内容
int rows = sheet.getRows(); // 行
for (int r = startRow; r < rows; r++) {
data = new HashMap<String, Object>();
// 行循环,Excel的行列是从(0,0)开始
for (int c = startCol; c < cols; c++) {
Cell excelRows = sheet.getCell(c, r);
data.put("bgbh", excelRows.getContents());
}
alldata.add(data);
}
}
ins.close();
return alldata;
}
追问
谢谢大神!!
我现在去试试看,一会儿有问题可以再来私聊你么?
还有我想询问一下,可以在我上面写的code里面增加或更改么。。这儿是萌新。。并不是很看得懂大神你写的内容。。
抱歉真的看不懂该如何使用或者修改。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询