编辑:
我正在尝试编写一个小型控制台应用程序,该应用程序将从 excel 电子表格中读取行,解析行并将字段数据写入新的 excel 文件。我正在使用 .NET 和 NPOI 库。经过大量挖掘,我终于在 apache 站点上找到了 POI 的 Java 文档。这是我更新的代码,有新的错误。
这实际上创建了一个可读文件,只是它只将文本写入第三列。
public static void TransferXLToTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("City", typeof(string));
dt.Columns.Add("State", typeof(string));
dt.Columns.Add("Zip", typeof(string));
using (FileStream stream = new FileStream(OpenFile(), FileMode.Open, FileAccess.Read))
{
IWorkbook wb = new XSSFWorkbook(stream);
ISheet sheet = wb.GetSheet("Sheet1");
string holder;
int i = 0;
do
{
DataRow dr = dt.NewRow();
IRow row = sheet.GetRow(i);
try
{
holder = row.GetCell(0, MissingCellPolicy.CREATE_NULL_AS_BLANK).ToString();
}
catch (Exception)
{
break;
}
string city = holder.Substring(0, holder.IndexOf(','));
string state = holder.Substring(holder.IndexOf(',') + 2, 2);
string zip = holder.Substring(holder.IndexOf(',') + 5, 5);
dr[0] = city;
dr[1] = state;
dr[2] = zip;
dt.Rows.Add(dr);
i++;
} while (!String.IsNullOrEmpty(holder));
}
using (FileStream stream = new FileStream(@"C:\Working\FieldedAddresses.xlsx", FileMode.Create, FileAccess.Write))
{
IWorkbook wb = new XSSFWorkbook();
ISheet sheet = wb.CreateSheet("Sheet1");
ICreationHelper cH = wb.GetCreationHelper();
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < 3; j++)
{
IRow row = sheet.CreateRow(i);
ICell cell = row.CreateCell(j);
cell.SetCellValue(cH.CreateRichTextString(dt.Rows[i].ItemArray[j].ToString()));
}
}
wb.Write(stream);
}
}