是否有一个程序化的解决方案,不涉及在服务器上安装Office?
更新 这个解决方案将部署在一个.Net商店中,所以目前还没有PHP和Java方法(尽管我对这些库本身印象深刻)。
我们将接收需要解析的csv,.xls和.xlsx格式的文档,并将其数据推送到数据库中。我们计划使用OpenXML SDK来解决所有解析问题,并希望只对一种文件类型进行操作。
答案 0 :(得分:3)
您可以使用 Apache POI library for Java来实现此目的。
HSSF是POI项目的Excel '97(-2007)文件格式的纯Java实现。
XSSF是POI项目的Excel 2007 OOXML(.xlsx)文件格式的纯Java实现。
我用它来阅读完整的.xls
和.xlsx
文件,我总是输出.xlsx
。
对于.csv
个文件,使用 Super CSV library 导入并使用上面的Apache POI库导出。
Super Csv的主要动机是成为Java上最好,最快,程序最友好的免费CSV软件包。
答案 1 :(得分:2)
如果您想要PHP解决方案而不是java
,请使用PHPExcel(http://www.phpexcel.net)答案 2 :(得分:1)
对于csv文件,我建议组合使用http://kbcsv.codeplex.com/将csv文件读入数据表,并使用其.PromDataTable方法将其转换为xlsx文件。 我的工作很棒,速度非常快。 对于阅读xls文件,没有我知道的免费实现:(
答案 3 :(得分:0)
您可以使用解析列。
object columnValue = ws.Cells[i, ColIndex, i, ColIndex].Value; // get Specific cell.
您可以在.csv,xlsx,.txt文件中使用以下方法。
public yourReturnType compute()
{
#region .XLSX Section
if (FilePath.FullName.Contains(".xlsx") || FilePath.FullName.Contains(".xls"))
{
// Open and read the XlSX file.
using (var package = new ExcelPackage(FilePath))
{
ExcelWorkbook wb = package.Workbook; // Get the work book in the file
if (wb != null)
{
if (wb.Worksheets.Count > 0)
{
ExcelWorksheet ws = wb.Worksheets.First(); // Get the first worksheet
yourParseCode(ws);
}
} // if End.
} // using end.
}
#endregion
#region .CSV Section
if (FilePath.FullName.Contains(".csv") || FilePath.FullName.Contains(".txt"))
{
CSVParser c = new CSVParser(FilePath);
DataTable dt = c.ReadCSVFile();
using (ExcelPackage pck = new ExcelPackage())
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("temporary");
ws.Cells["A1"].LoadFromDataTable(dt, true);
yourParseCode (ws);
////pck.Save(); // no need to save this temporary sheet.
}
}
#endregion
return (yourReturnType );
}