React Spreadsheet Hyperlinks
React 스프레드시트 구성 요소를 사용하면 Excel 통합 문서에 기존 하이퍼링크를 표시할 수 있을 뿐만 아니라 통합 문서의 웹사이트, 파일 디렉터리, 심지어 다른 워크시트에 링크할 수 있는 새로운 하이퍼링크를 삽입할 수도 있습니다.
React 스프레드시트 하이퍼링크 예시
import { saveAs } from "file-saver" ;
import { Workbook } from "@infragistics/igniteui-react-excel" ;
import { WorkbookFormat } from "@infragistics/igniteui-react-excel" ;
import { WorkbookSaveOptions } from "@infragistics/igniteui-react-excel" ;
import { WorkbookLoadOptions } from "@infragistics/igniteui-react-excel" ;
import { IgrExcelXlsxModule } from "@infragistics/igniteui-react-excel" ;
import { IgrExcelCoreModule } from "@infragistics/igniteui-react-excel" ;
import { IgrExcelModule } from "@infragistics/igniteui-react-excel" ;
IgrExcelCoreModule.register();
IgrExcelModule.register();
IgrExcelXlsxModule.register();
export class ExcelUtility {
public static getExtension(format: WorkbookFormat): string {
switch (format) {
case WorkbookFormat.StrictOpenXml:
case WorkbookFormat.Excel2007:
return ".xlsx" ;
case WorkbookFormat.Excel2007MacroEnabled:
return ".xlsm" ;
case WorkbookFormat.Excel2007MacroEnabledTemplate:
return ".xltm" ;
case WorkbookFormat.Excel2007Template:
return ".xltx" ;
case WorkbookFormat.Excel97To2003:
return ".xls" ;
case WorkbookFormat.Excel97To2003Template:
return ".xlt" ;
}
}
public static load(file: File): Promise <Workbook> {
return new Promise <Workbook>((resolve, reject ) => {
ExcelUtility.readFileAsUint8Array(file).then((a ) => {
Workbook.load(a, new WorkbookLoadOptions(), (w ) => {
resolve(w);
}, (e ) => {
reject(e);
});
}, (e ) => {
reject(e);
});
});
}
public static loadFromUrl(url: string ): Promise <Workbook> {
return new Promise <Workbook>((resolve, reject ) => {
const req = new XMLHttpRequest();
req.open("GET" , url, true );
req.responseType = "arraybuffer" ;
req.onload = (d): void => {
const data = new Uint8Array (req.response);
Workbook.load(data, new WorkbookLoadOptions(), (w ) => {
resolve(w);
}, (e ) => {
reject(e);
});
};
req.send();
});
}
public static save(workbook: Workbook, fileNameWithoutExtension : string ): Promise <string > {
return new Promise <string >((resolve, reject ) => {
const opt = new WorkbookSaveOptions();
opt.type = "blob" ;
workbook.save(opt, (d ) => {
const fileExt = ExcelUtility.getExtension(workbook.currentFormat);
const fileName = fileNameWithoutExtension + fileExt;
saveAs(d as Blob, fileName);
resolve(fileName);
}, (e ) => {
reject(e);
});
});
}
private static readFileAsUint8Array(file: File): Promise <Uint8Array > {
return new Promise <Uint8Array >((resolve, reject ) => {
const fr = new FileReader();
fr.onerror = (e): void => {
reject(fr.error);
};
if (fr.readAsBinaryString) {
fr.onload = (e): void => {
const rs = (fr as any ).resultString;
const str: string = rs != null ? rs : fr.result;
const result = new Uint8Array (str.length);
for (let i = 0 ; i < str.length; i++) {
result[i] = str.charCodeAt(i);
}
resolve(result);
};
fr.readAsBinaryString(file);
} else {
fr.onload = (e): void => {
resolve(new Uint8Array (fr.result as ArrayBuffer ));
};
fr.readAsArrayBuffer(file);
}
});
}
}
ts コピー import React from 'react' ;
import ReactDOM from 'react-dom/client' ;
import './index.css' ;
import { ExcelUtility } from './ExcelUtility' ;
import { IgrExcelXlsxModule } from "@infragistics/igniteui-react-excel" ;
import { IgrExcelCoreModule } from "@infragistics/igniteui-react-excel" ;
import { IgrExcelModule } from "@infragistics/igniteui-react-excel" ;
import { IgrSpreadsheetModule } from "@infragistics/igniteui-react-spreadsheet" ;
import { IgrSpreadsheet } from "@infragistics/igniteui-react-spreadsheet" ;
IgrExcelCoreModule.register();
IgrExcelModule.register();
IgrExcelXlsxModule.register();
IgrSpreadsheetModule.register();
export default class SpreadsheetHyperlinks extends React.Component {
public spreadsheet: IgrSpreadsheet;
constructor (props: any ) {
super (props);
this .onSpreadsheetRef = this .onSpreadsheetRef.bind(this );
}
public render (): JSX .Element {
return (
<div className ="container sample" >
<IgrSpreadsheet ref ={this.onSpreadsheetRef} height ="100%" width ="100%" />
</div >
);
}
public onSpreadsheetRef(spreadsheet: IgrSpreadsheet) {
if (!spreadsheet) { return ; }
this .spreadsheet = spreadsheet;
const url = "https://static.infragistics.com/xplatform/excel/Hyperlinks.xlsx" ;
ExcelUtility.loadFromUrl(url).then((w) => {
this .spreadsheet.workbook = w;
});
}
}
const root = ReactDOM.createRoot (document.getElementById('root' ));
root.render (<SpreadsheetHyperlinks /> );
tsx コピー
이 샘플이 마음에 드시나요? Ignite UI for React 전체에 액세스하고 몇 분 만에 나만의 앱을 빌드하기 시작하세요. 무료로 다운로드하세요.
하이퍼링크 개요
하이퍼링크가 다음에 추가됩니다. IgrSpreadsheet
액세스하여 제어 Hyperlinks
하이퍼링크를 배치할 워크시트의 컬렉션입니다. 이 컬렉션에는 Add
소요되는 메소드 WorksheetHyperlink
여기서는 셀 주소, 탐색할 하이퍼링크 URL, 표시 텍스트, 선택적으로 마우스를 올리면 표시할 도구 설명을 정의할 수 있습니다.
종속성
하이퍼링크를 사용하도록 React 스프레드시트 컨트롤을 설정할 때 다음과 같이 WorksheetHyperlink
클래스를 가져와야 합니다.
import { WorksheetHyperlink } from 'igniteui-react-excel' ;
ts
코드 조각
다음 코드 조각은 React IgrSpreadsheet
컨트롤에서 현재 보고 있는 워크시트에 하이퍼링크를 추가하는 방법을 보여줍니다.
this .spreadsheet.activeWorksheet.hyperlinks().add(new WorksheetHyperlink("A1" , "http://ko.infragistics.com" , "Infragistics" , "Infragistics Home Page" ));
ts
API 참조