我有一个字符串,管道和双正斜杠分开,我需要在excel文件中格式化为java输出
我在java中以字符串的形式获取数据,同时从XML文件中读取类似的标记。数据是管道(|)分隔的,每一个都是双正斜杠(//)分隔的。 共享标签中的三个字符串,这些字符串需要以excel格式转换为标签分隔的格式我有一个字符串,管道和双正斜杠分开,我需要在excel文件中格式化为java输出,java,xml,excel,dom,text-files,Java,Xml,Excel,Dom,Text Files,我在java中以字符串的形式获取数据,同时从XML文件中读取类似的标记。数据是管道(|)分隔的,每一个都是双正斜杠(//)分隔的。 共享标签中的三个字符串,这些字符串需要以excel格式转换为标签分隔的格式 Information - Desktop | Telecom//Apple Mac//iPhone//Working with iPhone Infrastructure - Desktop | Telecommunication//Apple iPod//iPad Information
Information - Desktop | Telecom//Apple Mac//iPhone//Working with iPhone
Infrastructure - Desktop | Telecommunication//Apple iPod//iPad
Information - Desktop | Telecom//Apple Mac//iTunes 10//Settings//Troubleshooting
- 这是我在java中使用DOM解析器通过XML获取的3个字符串
- 我需要将excel转换为以制表符分隔的txt文件的字符串
- 输出文件的格式为
请建议我如何实现循环以获得像这样的输出。执行这三个迭代步骤,以便将多分隔的非标准xml数据导入MS Excel
步骤1:导入数据
打开
Excel
→ 选择单元格B2
→ <代码>数据功能区→ <代码>来自文本图标(获取外部数据
组)→ 选择\yourFile.xml
→ 从“文本导入向导”窗口中选择分隔的
→ 点击next
→ 仅选择other
→ 键入|
(用于分隔符)→ 点击finish
→ 点击ok
步骤2:导出剩余部分
突出显示C列中的所有内容→ <代码>复制选择→ 打开记事本(Notepad.exe)→ <代码>粘贴内容→ <代码>保存记事本文件
\yourFile2.xml
步骤3:导入剩余部分
激活
Excel→ 选择列C
→ <代码>删除C列→ 选择单元格C2→ <代码>数据功能区→ <代码>来自文本图标(获取外部数据
组)→ 选择\yourFile.xml
→ 从“文本导入向导”窗口中选择分隔的
→ 点击next
→ 仅选择other
→ 键入/
(用于分隔符)→ 选择“将连续分隔符视为一个”→ 点击finish
→ 点击ok
。
执行这三个步骤后,您应该按照上面描述的方式(使用内置的MS Excel功能)分离XML数据
如果您有任何问题,请告诉我。执行这三个迭代步骤,以便将多分隔的非标准xml数据导入MS Excel
步骤1:导入数据
打开
Excel
→ 选择单元格B2
→ <代码>数据功能区→ <代码>来自文本图标(获取外部数据
组)→ 选择\yourFile.xml
→ 从“文本导入向导”窗口中选择分隔的
→ 点击next
→ 仅选择other
→ 键入|
(用于分隔符)→ 点击finish
→ 点击ok
步骤2:导出剩余部分
突出显示C列中的所有内容→ <代码>复制选择→ 打开记事本(Notepad.exe)→ <代码>粘贴内容→ <代码>保存记事本文件
\yourFile2.xml
步骤3:导入剩余部分
激活
Excel→ 选择列C
→ <代码>删除C列→ 选择单元格C2→ <代码>数据功能区→ <代码>来自文本图标(获取外部数据
组)→ 选择\yourFile.xml
→ 从“文本导入向导”窗口中选择分隔的
→ 点击next
→ 仅选择other
→ 键入/
(用于分隔符)→ 选择“将连续分隔符视为一个”→ 点击finish
→ 点击ok
。
执行这三个步骤后,您应该按照上面描述的方式(使用内置的MS Excel功能)分离XML数据
如果您有任何问题,请告诉我。我做了类似的事情。我能够以CSV格式输出数据,也许您希望使用API将其写入Excel文件
public class StringToExcelProblem {
static String INPUT_DATA =
"Information - Desktop | Telecom//Apple Mac//iPhone//Working with iPhone\n"
+ "Infrastructure - Desktop | Telecommunication//Apple iPod//iPad\n"
+ "Information - Desktop | Telecom//Apple Mac//iTunes 10//Settings//Troubleshooting\n";
public static void main(String[] args) {
StringTokenizer st = new StringTokenizer(INPUT_DATA, "\n");
List<Block> allBlocks = new ArrayList<>();
while(st.hasMoreTokens()) {
String blockData = st.nextToken();
String[] st2 = blockData.split(" \\| ");
String parent = st2[0];
String labels = st2[1];
StringTokenizer st3 = new StringTokenizer(labels, "//");
int index = 0;
Block block = null;
while(st3.hasMoreTokens()) {
String label = st3.nextToken();
if(index == 0){
block = new Block(parent, label);
index ++;
} else {
block.add(label);
}
parent = label;
}
allBlocks.add(block);
}
for(Block b: allBlocks) {
for(RowObj r: b.rows){
System.out.println(r);
}
System.out.println();
}
}
}
class RowObj {
String label;
String value;
String parentId;
String active;
String parentTable;
@Override
public String toString() {
return label + "," + value + "," + parentId + "," + active + "," + parentTable;
}
}
class Block {
List<RowObj> rows;
public Block(String parent, String name) {
RowObj row = new RowObj();
row.label = name;
row.value = name.toLowerCase();
row.parentId = "Knowledge Base: " + parent;
row.active = "TRUE";
row.parentTable = "k_knowledge_base";
rows = new ArrayList<>();
rows.add(row);
}
public void add(String name) {
RowObj parent = rows.get(rows.size()-1);
RowObj row = new RowObj();
row.label = name;
row.value = name.toLowerCase();
row.parentId = "Knowledge Category: " + parent.label;
row.active = "TRUE";
row.parentTable = "k_category";
rows.add(row);
}
@Override
public String toString() {
return rows.toString();
}
}
希望这有帮助 我做了类似的事情。我能够以CSV格式输出数据,也许您希望使用API将其写入Excel文件
public class StringToExcelProblem {
static String INPUT_DATA =
"Information - Desktop | Telecom//Apple Mac//iPhone//Working with iPhone\n"
+ "Infrastructure - Desktop | Telecommunication//Apple iPod//iPad\n"
+ "Information - Desktop | Telecom//Apple Mac//iTunes 10//Settings//Troubleshooting\n";
public static void main(String[] args) {
StringTokenizer st = new StringTokenizer(INPUT_DATA, "\n");
List<Block> allBlocks = new ArrayList<>();
while(st.hasMoreTokens()) {
String blockData = st.nextToken();
String[] st2 = blockData.split(" \\| ");
String parent = st2[0];
String labels = st2[1];
StringTokenizer st3 = new StringTokenizer(labels, "//");
int index = 0;
Block block = null;
while(st3.hasMoreTokens()) {
String label = st3.nextToken();
if(index == 0){
block = new Block(parent, label);
index ++;
} else {
block.add(label);
}
parent = label;
}
allBlocks.add(block);
}
for(Block b: allBlocks) {
for(RowObj r: b.rows){
System.out.println(r);
}
System.out.println();
}
}
}
class RowObj {
String label;
String value;
String parentId;
String active;
String parentTable;
@Override
public String toString() {
return label + "," + value + "," + parentId + "," + active + "," + parentTable;
}
}
class Block {
List<RowObj> rows;
public Block(String parent, String name) {
RowObj row = new RowObj();
row.label = name;
row.value = name.toLowerCase();
row.parentId = "Knowledge Base: " + parent;
row.active = "TRUE";
row.parentTable = "k_knowledge_base";
rows = new ArrayList<>();
rows.add(row);
}
public void add(String name) {
RowObj parent = rows.get(rows.size()-1);
RowObj row = new RowObj();
row.label = name;
row.value = name.toLowerCase();
row.parentId = "Knowledge Category: " + parent.label;
row.active = "TRUE";
row.parentTable = "k_category";
rows.add(row);
}
@Override
public String toString() {
return rows.toString();
}
}
希望这有帮助 有趣的问题。问题:在C4单元中,您是如何获得
知识类别:DH Apple Mac
?它不应该是知识类别:苹果Mac吗?在C5单元中,您是如何获得知识类别:DH iTunes 10的?是的,在C4单元中是知识类别:苹果Mac,在C5单元中是知识类别:iPhone。这是错误的,因为我也在用字符串做一些实验。有趣的问题。问题:在C4单元中,您是如何获得知识类别:DH Apple Mac?它不应该是知识类别:苹果Mac吗?在C5单元中,您是如何获得知识类别:DH iTunes 10的?是的,在C4单元中是知识类别:苹果Mac,在C5单元中是知识类别:iPhone。这是错误的,因为我也在做一些字符串的实验。我在java正文中有这些字符串值,我在java中解析XML以获得4个输出文件,我已经完成了3个输出文件,但对于第4个,我不知道如何实现该字符串值以获得所需格式的输出(txt文件-我在excel中以制表符分隔的形式导入)。我不确定我是否理解您的要求。不过,您是否尝试将解析文件的数据部分复制到单独的文本编辑器(如记事本)中?您可以将该数据另存为.txt
。excel非常方便地处理.txt文件