我希望能够访问用户手机的SD卡中的word文件,并且该文件将由用户选择。我希望能够处理文件,即读取其内容并根据用户的意愿进行修改,并在用户点击“保存”时保存。
在Android中有可能吗?如何让程序理解该文件是Word文件?
请注意,我不想查看Word文件。用户将选择Word文件,我的应用程序应该能够对其进行一些更改并保存。
答案 0 :(得分:2)
最简单的方法IMHO是将Apache POI库移植到Android。有可能并且proof那个
移植POI您可以将Word编辑功能嵌入到您的应用程序中。
一段代码如:
Intent intent = new Intent(Intent.ACTION_EDIT);
Uri uri = Uri.parse("file:///"+file.getAbsolutePath());
intent.setDataAndType(uri, "plain/text");
startActivity(intent);
简单地说,Word文件将由其他应用程序编辑 - 而不是您的。据我所知,这并不是你想要的。
答案 1 :(得分:1)
所以,正如我在上面写的那样。检查它的单词文件(.doc)的最简单方法是获取它的绝对路径并使用path.endsWith(".doc");
Android没有默认应用来查看.doc文件,但如果用户安装了这样的应用程序(即Polaris Office),您可以这样查看:
//Uri uri = Uri.parse("file://"+file.getAbsolutePath());
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(Intent.ACTION_VIEW);
String type = "application/msword";
intent.setDataAndType(Uri.fromFile(file), type);
startActivity(intent);
答案 2 :(得分:1)
我不确定但我明白的是,你想要的是能够确定文件是word文档而不是简单地查看扩展名。
我认为word文档有文件签名(见link)
在这种情况下,文件签名是OLE化合物文件格式,在标题位置具有以下二进制文件
d0 cf 11 e0 a1 b1 1a e1
因此,检查相应的字节应该说明它是否是word文档。小心,我不确定二进制文件是否特定于word,doc或docx,或者是否适用于所有的microsoft office:powerpoint,excel,word。
您应该在网上搜索“microsoft word document file signature”。这肯定会为您提供所需的信息。
现在,如何“编辑”它是另一个问题。
答案 3 :(得分:1)
读取和写入Word文档
将Apache POI移植到Android很可能是具有工时约束的项目的唯一现实解决方案。它已由其他人完成,网上有一些信息可以提供。以下博客有一个Excel示例,您可以将其作为Word解决方案的起点:
Android read write excel file using Apache POI
<强>验证强>
虽然Apache POI很可能是您的最佳选择,但它打开的某些文档无法在MS Word中打开,因此无效的MS Word文档。
Word格式的结构非常复杂。它不仅仅是带有标签的文本流。它是一种专有格式,如果不访问格式结构,就无法完全准确地验证Word文件。
最后,Word文档的唯一100%准确验证是在MS Word中打开。 This与Microsoft Word MVP的Jay Freedman进行了讨论,提供了有关验证问题的一些观点以及对Word格式结构的一些见解。
Net,如果你使用Apache POI,你会有一些误报,这取决于你的客户的要求是否可以接受。
答案 4 :(得分:1)
您的问题需要更多澄清
无论如何,这是你应该做的编辑文件
阅读文件
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard,"theFILE");
StringBuilder content = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
content.append(line);
content.append('\n');
}
}
catch (IOException e) {
}
编辑内容
content.append("bla bla");
content.append("kaza maza");
保存文件
FileOutputStream f = new FileOutputStream(file);
f.write(content.toString().toCharArray());
请记住向您的清单添加写入SD卡的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<强>验证强>
不幸的是,这是最难的部分。 Apache POI是一个选择;但它是一个大型图书馆,不能保证正确的行为。
完美的解决方案是检查MS-DOC format。这是一个非常重要的要求。对于这样一个有限的应用程序,我想如果你搜索网络,你将找不到任何东西。因此,您必须实现一个遵循此格式的阅读器。
答案 5 :(得分:0)
如果要直接编辑数据,只需对可用的文本编辑器执行意图。
Intent intent = new Intent(Intent.ACTION_EDIT);
Uri uri = Uri.parse("file:///"+file.getAbsolutePath());
intent.setDataAndType(uri, "plain/text");
startActivity(intent);