【问题标题】:how to solve the compatibility check when converting csv file to xls file?如何解决将csv文件转换为xls文件时的兼容性检查?
【发布时间】:2014-08-15 03:17:34
【问题描述】:

我有以下函数将 csv 文件转换为 xls 文件。

…
            Application objExcel = new Application();
            Workbooks objBooks = (Workbooks)objExcel.Workbooks;

            object objOpt = System.Reflection.Missing.Value;
            try
            {
                objBooks.OpenText(inputPathNFileName, XlPlatform.xlWindows, 1, XlTextParsingType.xlDelimited, XlTextQualifier.xlTextQualifierDoubleQuote,
                  false, false, false, true, false, false, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt, objOpt);
                Workbook objBook = objExcel.ActiveWorkbook;

                objBook.SaveAs(outPathNFileName, XlFileFormat.xlWorkbookNormal, objOpt, objOpt, objOpt, objOpt, XlSaveAsAccessMode.xlNoChange, objOpt, objOpt, objOpt, objOpt, objOpt);

                objBook.Close(false, objOpt, objOpt);
                objExcel.Quit();
                releaseObject(objBook);
                releaseObject(objBooks);
                releaseObject(objExcel);
            }
            catch (Exception e)
            {
                …
            }

现在我的问题是,如果我的 csv 文件的行数超过 65,536 行,我将在 SaveAs 步骤收到警告消息,并且 65,536 之后的所有行都将被切掉。警告消息是“此工作簿包含所选格式的行和列限制之外的单元格中的数据。超过 256(IV) 列 x 65,536 行的数据将不会被保存。"

如何解决此问题,以使 csv 文件的行/列不受限制?

【问题讨论】:

  • csv->xls?你无法绕过它。这是 .xls 格式的基本限制。如果您想要更多行,则必须升级到 .xlsx,它的限制要高得多。
  • 在代码中检查行数,如果 > 65535,则显示警告说 Excel 2003 最多仅支持 64k 行,请升级到 Office 2010+ 以使用 .xlsx 格式.
  • 我尝试用 xlsx 扩展名更改 outPathNFileName,但我仍然在 SaveAs 处收到警告。

标签: c# csv xls


【解决方案1】:

我在这里找到了这个帮助, Excel Interop Save as is giving compatibility checker in excel 2007 我尝试了它也解决了我的问题的解决方案。

if (Convert.ToDouble(objExcel.Version) > 11.0)
                {
                    objBook.SaveAs(outPathNFileName, 51, objOpt, objOpt, objOpt, objOpt, XlSaveAsAccessMode.xlNoChange, objOpt, objOpt, objOpt, objOpt, objOpt);
                }
                else
                {
                    objBook.SaveAs(outPathNFileName, 56, objOpt, objOpt, objOpt, objOpt, XlSaveAsAccessMode.xlNoChange, objOpt, objOpt, objOpt, objOpt, objOpt);
                }

【讨论】:

    猜你喜欢
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多