Excel interop dllを使用してExcelファイルをHTMLファイルにエクスポートするアプリケーションを作成します。 1つのキャッチは、.HTMLファイルのプレビューがExcelで表示されているかのように現実に近いかどうかを確認したいということです。初期フォーマットに基づいてセルをフォーマットする[非常に遅い]
通常、ExcelファイルをHTMLファイルとしてエクスポートするときには、枠線や「グリッド線」は表示されません。 Excelはcoloured cells, grid lines are not shown.
をレンダリングする際に、この問題を解決するにはyou must add your own borders.
は、しかし、私は、「何の塗りつぶし」を持っていないセルに境界線を追加するには、C#のコードの下に書いた:
using Microsoft.Office.Interop.Excel;
namespace CS_HelloExcel
{
class Program
{
static void Main()
{
//Create excel application:
Application application = new Application();
//Define filename "C:\Users\sancarn\Documents\"
String filename = "C:\\Users\\sancarn\\Documents\\myFormatedXL.xlsx";
//Open workbook as read only, don't update links
Workbook workbook = application.Workbooks.Open(filename, false, true);
foreach (Worksheet sheet in workbook.Sheets)
{
Range ur = sheet.UsedRange;
ur = ur.Resize[ur.Rows.Count + 1, ur.Columns.Count + 1];
//Create individual cells where blank cells originally occur - Takes 0.2s
ur.Replace("", "'");
// Takes 3.4s
foreach(Range cell in ur.Cells)
{
if(cell.Interior.Pattern == -4142)
{
Borders b = cell.Borders;
b[XlBordersIndex.xlEdgeBottom].LineStyle= XlLineStyle.xlContinuous;
b[XlBordersIndex.xlEdgeBottom].ThemeColor = 3;
b[XlBordersIndex.xlEdgeBottom].Weight = 2;
b[XlBordersIndex.xlEdgeLeft].LineStyle= XlLineStyle.xlContinuous;
b[XlBordersIndex.xlEdgeLeft].ThemeColor = 3;
b[XlBordersIndex.xlEdgeLeft].Weight = 2;
b[XlBordersIndex.xlEdgeRight].LineStyle= XlLineStyle.xlContinuous;
b[XlBordersIndex.xlEdgeRight].ThemeColor = 3;
b[XlBordersIndex.xlEdgeRight].Weight = 2;
b[XlBordersIndex.xlEdgeTop].LineStyle= XlLineStyle.xlContinuous;
b[XlBordersIndex.xlEdgeTop].ThemeColor = 3;
b[XlBordersIndex.xlEdgeTop].Weight = 2;
}
}
}
//Save workbook as html file takes 0.5s
application.DisplayAlerts = false;
workbook.SaveAs("myFormatedXL.html",XlFileFormat.xlHtml);
//Get workbook path
String path = workbook.FullName;
//Close application
workbook.Close(false);
application.Quit();
//Free up memory
application = null;
}
}
}
コメントに示すがようすべての細胞のループは3.5秒かかります...私はこの仕事をどのようにスピードアップできるか誰かが知っているのだろうか?
xlsxファイルを使用している場合は、interopクラスの使用を中止し、Microsoftのopen xml sdkを使用してください。 –
@ScottChamberlainすべてのExcel形式が理想的です。しかし、私はそれについていくつかのチェックを追加することができます:)私の友人はまた、xlsx形式のhttps://epplus.codeplex.com/を提案しました。 – Sancarn
ClosedXMLはxlsxと対話する素晴らしいライブラリです。残念ながら、古いxls形式はサポートしていません。 –