ClosedXML.dllを使用してExcelファイルを作成しましたが、ClosedXMLはExcelファイルを.xlsxとして保存し、クライアントのPCはOffice 2003のみを実行するため、.xlsxファイルを開くことができません。その.xlsxを.xlsに変換するにはどうすればよいですか。
任意の推奨事項をいただければ幸いです。みなさん、ありがとうございました。
可能であれば、クライアントにMicrosoft Office互換性パックをインストールするように依頼します。これにより、Office2003でOffice2007形式のドキュメントを開くことができます。
MS Office Compatibility Pack をhttp://www.microsoft.com/downloadsからダウンロードします。
Excel c#を使用してXLSX を XLS に変換できます
次のようなコードを使用します。
// Create new XLSX file.
var xlsxFile = new ExcelFile();
// Load data from XLSX file.
xlsxFile.LoadXlsx(fileName + ".xls", XlsxOptions.PreserveMakeCopy);
// Save XLSX file to XLS file.
xlsxFile.SaveXls(fileName + ".xls");
.XlFileFormat.xlExcel7 を使用して、Excel 95 ファイルをフォーマットします。
ExcelDataReaderとExcelPlusPlusを使用してみてください。それらはオープンソースであり、優れています
これに関して、ほんの数日前に質問を投稿しました。
注:これはvba
解決策です。
これは、各ワークブックを順番に開き、.xls 形式で保存するフォルダーをループします。C:xxx とマークされたパスを .xlsx ファイルの場所に変更するだけです。これにより、エンド ユーザーに製品を開くための操作を要求する必要がなくなります。私の経験では、多くのユーザーがいる場合、互換性パックをインストールできない、またはインストールしたくない人もいます。
Option Explicit
Sub Convert_to972003()
Dim orgwb As Workbook
Dim mypath As String, strfilename As String
Dim nname As String
'--> Error Handling
On Error GoTo WhatHappened
'--> Disable Alerts
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
'--> Specify location of workbooks
mypath = "C:\xxx"
strfilename = Dir(mypath & "\*.xlsx", vbNormal)
'--> Check the specified folder contains files
If Len(strfilename) = 0 Then Exit Sub
'--> Start Loop, end when last file reached
Do Until strfilename = ""
'--> Open a workbook
Set orgwb = Application.Workbooks.Open _
(mypath & "\" & strfilename)
'--> Create new Filename, Save in new File Format and Close
nname = Replace(strfilename, ".xlsx", ".xls")
orgwb.SaveAs mypath & "\" & nname, FileFormat:=xlExcel8
orgwb.Close
strfilename = Dir()
Loop
'--> Enable Alerts
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
Exit Sub
WhatHappened: MsgBox Err.Description
End Sub
ClosedXML.dllのFAQ から:
Excel 2003 以前の形式 (.xls) はサポートされていますか? いいえ。ClosedXML は、Excel 2007/2010 形式 (.xlsx) のみをサポートします。
最終編集 2011 年 5 月 16 日午後 7 時 45 分、MDeLeon、バージョン 1
sec_goat Jul 19 at 5:54 PM これが適切な場所かどうかはわかりませんが、これは xls ファイルに使用した回避策です。それらを Interop.Excel で開き、新しいファイルの種類として保存します。これは最も洗練されたものではありませんが、少なくとも人々に何ができるかについてのアイデアを与えてくれます。
public void Convert(String filesFolder)
{
files = Directory.GetFiles(filesFolder);
var app = new Microsoft.Office.Interop.Excel.Application();
var wb = app.Workbooks.Open(file);
wb.SaveAs(Filename: file + "x", FileFormat: Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook);
wb.Close();
app.Quit();
}
お役に立てれば ;)