我正在开展一个项目,我必须在Excel工作表中插入公司徽标。 我正在使用apache-poi,但我收到找不到文件异常。
我将我的徽标存储在我的drawable文件夹中,稍后又存放在我的资源文件夹中,仍然是同样的事情。
这是我的代码
InputStream is = new FileInputStream("logo.png");
byte [] bytes = IOUtils.toByteArray(is);
int pictureIndex = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);
is.close();
CreationHelper helper = wb.getCreationHelper();
patriarch = sheet.createDrawingPatriarch();
ClientAnchor anchor = helper.createClientAnchor();
anchor.setCol1(10);
anchor.setRow1(3);
Picture pict = patriarch.createPicture(anchor, pictureIndex);
pict.resize();
try {
FileOutputStream out = new FileOutputStream(root+"/Busotina/Busotina1.xls");
wb.write(out);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
所以我的问题是,我应该将我的图像存储在某个特定的文件夹中,还是我在处理另一个问题?
答案 0 :(得分:2)
我认为你应该将想要以编程方式进行交互的文件放在/res/raw
文件夹中。然后访问为
InputStream inputStream = activity.getResources().openRawResource(R.raw.logo);
请参阅developer.android上的directory raw。阅读:
以原始格式保存的任意文件。要使用原始InputStream打开这些资源,请使用资源ID(即R.raw.filename)调用Resources.openRawResource()。 但是,如果需要访问原始文件名和文件层次结构,可以考虑在assets /目录中保存一些资源(而不是res / raw /)。资产/中的文件未获得资源ID,因此您只能使用AssetManager读取它们。